【发布时间】:2020-04-20 19:13:01
【问题描述】:
我正在尝试将多个元组传递给 SQLite 中的占位符。 示例我得到 2 个元组,如下所示:
tup_A = (1, 2, 3, 4)
tup_B = (5, 6, 7, 8)
SQL 命令如下:
sql = 'SELECT * FROM abc WHERE col_A IN (?,?,?,?) AND NOT IN (?,?,?,?) ORDER BY col_A;'
所以我尝试了执行器:
results = executor(sql, (tup_A,tup_B))
和
results = executor(sql, tup_A + tup_B)
但它会导致
OperationalError('near "IN": syntax error',)
我已经尝试使用一个参数成功运行命令:
sql = 'SELECT * FROM abc WHERE col_A IN (?,?,?,?) ORDER BY col_A;'
results = executor(sql, tup_A)
任何帮助将不胜感激
【问题讨论】:
-
注意你得到的错误。您的查询语法有问题。
-
阅读 the documentation 可能有助于了解问题所在。
-
感谢 Shawn,我意识到我在 NOT IN 子句之前错过了 col_a
-
您不需要
AND col_A NOT IN (?,?,?,?),因为查询的第一部分会以任何方式过滤掉这些记录。