考虑这一点(在这里使用apsw):
s = ["A", "B", "C"]
c.execute("SELECT foo.y FROM foo WHERE foo.x in (?)", (s, ))
这不起作用,因为绑定参数不能是列表。我想将一个字符串列表绑定到?
。我知道如何手动构建适当的查询字符串,但我想知道是否有办法通过绑定来实现这一点。
答案 0 :(得分:1)
Fabian采用多重问号的想法,怎么样
c.execute("SELECT foo.y FROM foo WHERE foo.x in (%s)" % ', '.join('?' * len(s)), s)
答案 1 :(得分:0)
我在大约4年前遇到过这个问题,然后我发现将列表绑定到sql是不可能的(我使用的是mssql服务器和ODBC提供程序,但也考虑直接sql调用)
在我的情况下,我只是手动构建查询,它是有效的。如果你有一个很长的值列表,你将不得不创建另一个表,在运行时填充它并在你的SQL中加入它。