我正在尝试使用 IN 语句返回与字符串列表之一匹配的结果
例如
strings = ['string1', 'string2', 'string3']
c.execute('select count(*) from table where foo in ?', strings)
我知道这是不正确的并且不起作用,但我希望它能突出我正在尝试做的事情...
最佳答案
你不能那样做。存在三个问题:
- 除非在表名周围使用反引号,否则您不能拥有名为
table
的表。 - IN 子句必须有括号。
- 您需要三个参数,而不是一个。
试试这个:
sql = 'SELECT COUNT(*) FROM yourtable WHERE foo IN (?, ?, ?)'
如果字符串的数量是可变的,请改用它:
params = ','.join('?' for x in strings)
sql = 'SELECT COUNT(*) FROM yourtable WHERE foo IN (' + params + ')'
关于sqlite查询中的python字符串替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5205994/