在SQL查询中将Python列表作为参数
我有一个Python列表,比如说
l = [1,5,8]
我想写一个SQL查询,来获取这个列表中所有元素的数据,比如说
select name from students where id = |IN THE LIST l|
我该怎么做呢?
16 个回答
137
最简单的方法是先把列表转换成 tuple
(元组)。
t = tuple(l)
query = "select name from studens where id IN {}".format(t)
149
到目前为止,大家的回答都是把值直接放进一个普通的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)