在SQL查询中将Python列表作为参数

179 投票
16 回答
249637 浏览
提问于 2025-04-11 18:18

我有一个Python列表,比如说

l = [1,5,8]

我想写一个SQL查询,来获取这个列表中所有元素的数据,比如说

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

我该怎么做呢?

16 个回答

37

别把事情搞复杂,解决这个问题的方法很简单。

l = [1,5,8]

l = tuple(l)

params = {'l': l}

cursor.execute('SELECT * FROM table where id in %(l)s',params)

在这里输入图片描述

希望这对你有帮助!!!

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)

撰写回答