スポンサーリンク
Pythonプログラミング

【Python入門】Pandasのread_sqlでSQLパラメータを渡す方法

python Python
この記事は約2分で読めます。

SQLからデータを取得してPandasのDataFrameに変換する際、read_sql()メソッドは非常に便利です。この記事では、SQLのWHERE句にパラメータを渡す方法を、具体例を交えて解説します。

🔧 基本構文

import pandas as pd
df = pd.read_sql(sql,con)
  • sql: 実行したいSQL文(SELECT文など)
  • con: データベース接続情報(ODBCやSQLAlchemyなど)

🎯 WHERE句にパラメータを渡すには?

SQL文に動的な条件を指定したい場合、params引数を使います。

✅ 1つのパラメータを渡す場合

sql = "SELECT * FROM テーブル名 WHERE 項目1 = ?"
df = pd.read_sql(sql, con, params=[value1])
  • ? はプレースホルダー(クエスチョンマーク)
  • params に渡した値が ? に順番に代入されます

✅ 複数のパラメータを渡す場合

sql = "SELECT * FROM テーブル名 WHERE 項目1 = ? AND 項目2 = ?"
df = pd.read_sql(sql, con, params=[value1, value2])
  • params のリストと ? の数は一致させる必要があります

💡 よくあるつまずきポイント

  • SQL文中の ? を忘れるとエラーになります
  • params の順番と ? の順番が一致していないと、意図しない結果になります

📝 まとめ

使用ケースSQL文Pythonコード
パラメータなし"SELECT * FROM テーブル名"pd.read_sql(sql, con)
パラメータ1つ"SELECT * FROM テーブル名 WHERE 項目1 = ?"pd.read_sql(sql, con, params=[value1])
パラメータ複数"SELECT * FROM テーブル名 WHERE 項目1 = ? AND 項目2 = ?"pd.read_sql(sql, con, params=[value1, value2])

このように、read_sql()params引数を使えば、SQL文に柔軟に条件を渡すことができます。特に実務では、ユーザー入力や動的な条件に応じてSQLを組み立てる場面が多いため、覚えておくと非常に便利です。

コメント

タイトルとURLをコピーしました