mysqlclientのプレースホルダでIN句を使う
PythonのmysqlclientでIN句を使う方法を調べました。
import MySQLdb
connection = MySQLdb.connect(
host='localhost',
user='root',
passwd='',
db='mydatabase',
charset='utf8'
)
cursor = connection.cursor()
try:
sqlstr = '''
SELECT
id
,name
FROM mytable
WHERE
'''
ids = ['1', '3']
format_strings = ','.join(['%s'] * len(ids))
where_string = " id IN(%s)" % format_strings
sqlstr = sqlstr + where_string
cursor.execute(sqlstr, ids)
print(cursor._executed.decode('utf-8'))
print('-------------')
for row in cursor.fetchall():
print(row)
except MySQLdb.Error as e:
print(e)
python sql_where_in.py
SELECT
id
,name
FROM mytable
WHERE
id IN('1','3')
-------------
(1, 'taro')
(3, 'jiro')
クエリ文字列を組み立てるときに、フォーマット文字列にIN句に入れる配列分フォーマット文字列を入れて、配列をバインドしています。
ディスカッション
コメント一覧
まだ、コメントがありません