1. ホーム
  2. python

[解決済み] SQLクエリにパラメータとしてpythonのリストを指定する [重複].

2022-05-13 18:02:09

質問

Pythonのリスト、例えばlがあります。

l = [1,5,8]

というリストの全要素のデータを取得するSQLクエリを書きたい。

select name from students where id = |IN THE LIST l|

どうすれば実現できるのか?

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

これまでの回答は、値をプレーンなSQL文字列にテンプレート化するものでした。これは整数ではまったく問題ありませんが、文字列でそれを実行しようとすると、エスケープの問題が発生します。

パラメータ化されたクエリを使用することで、両方で動作するバリエーションがここにあります。

placeholder= '?' # For SQLite. See DBAPI paramstyle.
placeholders= ', '.join(placeholder for unused in l)
query= 'SELECT name FROM students WHERE id IN (%s)' % placeholders
cursor.execute(query, l)