パラメータ化された SQL クエリを備えた Pandas read_sql
pandas.read_sql
関数は、データベースからデータをフェッチするための強力なツールです。 SQLAlchemy エンジンを使用する場合、パラメータを SQL クエリに効果的に渡すことが重要です。 このガイドでは、位置パラメーターと名前付きパラメーターという 2 つの一般的なアプローチを説明します。
方法 1: 位置パラメータ
このメソッドはリストまたはタプルを使用して SQL クエリにパラメータを提供します。 SQL ステートメント内のプレースホルダー (%s
) は、パラメーター リスト内の要素によって順番に置き換えられます。
例:
<code class="language-python">import pandas as pd from datetime import datetime # ... (database connection setup using SQLAlchemy) ... query = ('SELECT "Timestamp", "Value" FROM "MyTable" ' 'WHERE "Timestamp" BETWEEN %s AND %s') params = [datetime(2014, 6, 24, 16, 0), datetime(2014, 6, 24, 17, 0)] df = pd.read_sql(query, db, params=params, index_col=['Timestamp'])</code>
方法 2: 名前付きパラメータ
名前付きパラメータにより、可読性と保守性が向上します。 ただし、サポートされる構文はデータベース ドライバーによって異なります。 SQLAlchemy と psycopg2 では、%(name)s
構文が必要です。
例:
<code class="language-python">import pandas as pd from datetime import datetime # ... (database connection setup using SQLAlchemy) ... query = ('SELECT "Timestamp", "Value" FROM "MyTable" ' 'WHERE "Timestamp" BETWEEN %(dstart)s AND %(dfinish)s') params = {"dstart": datetime(2014, 6, 24, 16, 0), "dfinish": datetime(2014, 6, 24, 17, 0)} df = pd.read_sql(query, db, params=params, index_col=['Timestamp'])</code>
重要な注意事項: 常にデータベース ドライバーのドキュメントを参照して、パラメーターの構文が正しいことを確認してください。 間違った構文を使用すると、クエリ エラーが発生します。 これにより、パラメータ化されたクエリが正しく安全に実行されます。
以上がSQLクエリを使用してパンダのread_sqlにパラメータを渡す方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。