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を直接渡す方が簡便です。

これにより、用途に応じた柔軟なデータベース操作が可能になります。

いいなと思ったら応援しよう!