我有一个python的列表。
article_ids = [1,2,3,4,5,6]
我需要在sql语句中使用此列表,如下所示:
SELECT id FROM table WHERE article_id IN (article_ids)
如何将此列表提供给我的IN()
子句?
我已经尝试了一些我用谷歌搜索的方法,但我想不出来。
>> print ids_list
placeholders= ', '.join('?'*len(ids_list)) # "?, ?, ?, ... ?"
query = 'SELECT article_id FROM article_author_institution WHERE institution_id IN ({})'.format(placeholders)
print query
cursor.execute(query, ids_list)
收到错误消息:
SELECT article_id FROM article_author_institution WHERE institution_id IN (?)
query = query % db.literal(args)
TypeError: not all arguments converted during string formatting
例如:
ids_list = [9,10]
placeholders= ', '.join('%'*len(ids_list)) # "?, ?, ?, ... ?"
query = 'SELECT aid FROM article_author_institution WHERE instid IN ({})'.format(placeholders)
print query
cursor.execute(query, ids_list)
输出和错误消息为:
SELECT aid FROM article_author_institution WHERE instid IN (%, %)
Traceback (most recent call last):
File "deneme3.py", line 11, in <module>
cursor.execute(query, ids_list)
File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 159, in execute
query = query % db.literal(args)
ValueError: unsupported format character ',' (0x2c) at index 61
我们的想法是这样一个查询:
其中每个
%s
将由列表中的元素替换。要构造此字符串查询,可以执行以下操作:最后
相关问题 更多 >
编程相关推荐