Pythonで、変数を挿入して柔軟にSQLクエリを構築する

データ処理のタスクをこなしていると、Python で SQL に変数を挿入し柔軟に SQL クエリを構築したくなる。 例えば、 中間テーブルを作るために Airflow などで定期的なジョブを実行し、SQL の createdの時間を当日のものに変更する training, dev, test でデータを分割する際に、createdの条件を変更して 3 パターンのデータを取得する などが考えられる。 変数を SQL に組み込んで実行したい際には、kayak/pypikaのような SQL builder もあるが、個人的に可読性が悪くなったり、SQL クエリの作成のためだけに余計なパッケージをいれたくない。そのためパッケージを入れずにシンプルに完結する方法をここでは紹介する。 編集履歴 2021/05/12: twitter で docstring ではなく string literal ですよという指摘をいただき修正 ref 2021/05/12: twitter での意見を反映 1. 単なる文字列として SQL クエリを構築 1 2 3 def get_guery(num: int, category: str): sql=f"SELECT field1, field2, field3, field4 FROM TABLE WHERE condition1={num} AND condition2={category}" return sql f-string で文字列に変数を挿入して、SQL クエリを構築 だが、...

April 29, 2021 · Shunya Ueta