在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
答案 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",))
您必须从逗号分隔的值列表中删除括号和空格。