1. ホーム
  2. python

[解決済み] Python/psycopg2 WHERE INステートメント

2022-11-19 04:53:40

質問

SQL文の%sでリスト(countryList)を利用できるようにするには、どのような方法が正しいですか?

# using psycopg2
countryList=['UK','France']

sql='SELECT * from countries WHERE country IN (%s)'
data=[countryList]
cur.execute(sql,data)

今のままでは、"WHERE country in (ARRAY[...])" を実行しようとすると、エラーになります。文字列操作以外の方法はないのでしょうか?

感謝

どのように解決するのですか?

については IN 演算子が必要です。 アップル 代わりに リスト で、SQLの文字列から括弧を削除してください。

# using psycopg2
data=('UK','France')

sql='SELECT * from countries WHERE country IN %s'
cur.execute(sql,(data,))

デバッグ中に、SQL が正しくビルドされているかどうかを確認するには

cur.mogrify(sql, (data,))