将字符串列表绑定到IN子句

时间:2010-07-09 12:31:36

标签: python sqlite list binding

  

可能重复:
  python list in sql query as parameter

考虑这一点(在这里使用apsw):

s = ["A", "B", "C"]
c.execute("SELECT foo.y FROM foo WHERE foo.x in (?)", (s, ))

这不起作用,因为绑定参数不能是列表。我想将一个字符串列表绑定到?。我知道如何手动构建适当的查询字符串,但我想知道是否有办法通过绑定来实现这一点。

2 个答案:

答案 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中加入它。