带有可变值的Python SQLite IN运算符

时间:2020-04-30 15:16:45

标签: python sql sqlite sql-in

在Python SQLite中,如何使(1, 2)成为变量,例如:

cursor.execute('SELECT * FROM basicinfo WHERE id IN (1, 2)')

不执行以下操作:

cursor.execute('SELECT * FROM basicinfo WHERE id IN ?', (1, 2))

出现错误:

sqlite3.OperationalError: near "?": syntax error

1 个答案:

答案 0 :(得分:1)

您的sql语句中只有1个?占位符,但是您希望传递值列表,这在语法上是错误的。
您可以使用:

cursor.execute("SELECT * FROM basicinfo WHERE id IN ?", ("(1, 2)",))

但这会导致以下sql语句:

SELECT * FROM basicinfo WHERE id IN '(1, 2)'

这不是您想要的,因为?占位符将被字符串文字'(1, 2)'代替而不是值列表。

在这种情况下,您可以使用运算符LIKE

cursor.execute("SELECT * FROM basicinfo WHERE ',' || ? || ',' LIKE '%,' || id || ',%' ", ("1,2",))

您必须从逗号分隔的值列表中删除括号和空格。

相关问题