一段时间以来,我一直在使用参数化查询,例如
SELECT *
FROM table
WHERE table.id <> ?
将占位符的单个代码作为参数传递。
现在我需要输入多个例外。我以为,而不是
SELECT *
FROM table
WHERE table.id <> ? and table.id <> ? and table.id <> ?
并将参数作为三个值[v1, v2, v3]
的列表传递,使用not in
SELECT *
FROM table
WHERE table.id not in ?
,并在参数中使用单个值(v1, v2, v3)
。这样做非常好,因为如果添加了新的异常,并且例如可以从文件中获取它们,那么如果需要将新值用作异常,则无需修改代码。
但是我收到错误消息
pyodbc.ProgrammingError: ('Invalid parameter type. param-index=1 param-type=tuple', 'HY105')
似乎元组不能用作参数。我还尝试了列表[v1, v2, v3]
和set([v1, v2, v3])
,似乎没有任何作用。
这应该怎么做?
编辑:戈登是对的,事实证明这是完全相同的问题。