polars read_databaseとread_database_uriの違い
polarsのread_databaseとread_database_uriは、どちらもデータベースからデータを読み取るための関数ですが、接続情報の指定方法に違いがあります。
参考ページ
1. read_database
read_databaseは、データベースの既存の接続オブジェクト(例えばSQLAlchemyのEngineやConnectionオブジェクト)を使ってデータを読み取る関数です。
使い方
connection引数に、SQLAlchemyのエンジンや接続オブジェクトを渡す必要があります。
例
from sqlalchemy import create_engine
import polars as pl
# SQLAlchemyのエンジンを作成
engine = create_engine("mysql+pymysql://username:password@localhost:3306/dbname")
# データベースからデータを取得
query = "SELECT * FROM some_table"
df = pl.read_database(query, connection=engine)
利用シーン
既に接続の管理を別途行っている場合(複数のクエリを同じ接続で実行したい場合)。
接続の使い回しが必要な場合、例えば、複数のデータベース操作を同じセッション内で行いたいとき。
2. read_database_uri
read_database_uriは、**データベース接続文字列(URI)**を直接渡してデータを読み取るための関数です。
使い方
uri引数にデータベースの接続文字列(SQLAlchemy形式)を渡します。
例
import polars as pl
# URIを直接指定してデータベースからデータを取得
uri = "mysql+pymysql://username:password@localhost:3306/dbname"
query = "SELECT * FROM some_table"
df = pl.read_database_uri(query, uri=uri)
利用シーン
クエリごとにデータベース接続を再作成する場合。
接続オブジェクトを作成する必要がなく、簡潔に記述したい場合。
使い分けのポイント
複数クエリを同じ接続で使いたい場合:
read_databaseを使用して、接続オブジェクトを共有します。
シンプルなクエリを実行したい場合:
read_database_uriでURIを直接渡す方が簡便です。
これにより、用途に応じた柔軟なデータベース操作が可能になります。