sqlite查询中的python字符串替换

cro*_*red 2 python sqlite

我正在尝试使用IN语句返回与字符串列表中的一个匹配的结果

例如

strings = ['string1', 'string2', 'string3'] c.execute('select count(*) from table where foo in ?', strings)

我知道这是不正确的,但不起作用,但我希望它突出了我想要做的...

Mar*_*ers 6

你不能这样做.有三个问题:

  • table除非在表名周围使用反引号,否则不能调用表.
  • IN子句必须带括号.
  • 你想要三个参数,而不是一个.

试试这个:

sql = 'SELECT COUNT(*) FROM yourtable WHERE foo IN (?, ?, ?)'
Run Code Online (Sandbox Code Playgroud)

如果字符串的数量是可变的,请改用:

params = ','.join('?' for x in strings)
sql = 'SELECT COUNT(*) FROM yourtable WHERE foo IN (' + params + ')'
Run Code Online (Sandbox Code Playgroud)