【发布时间】:2018-05-30 18:50:08
【问题描述】:
有没有办法将python列表作为pymysql中prepared statement的参数传递?
list_id = [1,2,3]
sql = "select * from table where id in (%s)"
cursor.execute(sql,(list_id,))
【问题讨论】:
-
不。没有办法做到这一点......将一组(列表)值传递到单个绑定占位符中。准备好的语句绑定值是 标量 值。无法传递将被解释为 SQL 的语法。要执行这是一个带有绑定占位符的准备好的语句,SQL 文本需要是“
SELECT * FROM table WHERE id IN (?,?,?)”,每个值都有一个单独的问号。我们可以编写代码来计算列表中值的数量,然后动态生成一条带有所需占位符数量的 SQL 语句。 -
@spencer7593 我认为这是链接问题的答案中解释的确切技术