sqlite查询中的python字符串替换

标签 python sqlite

我正在尝试使用 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/

相关文章:

python - 是否有使用 Sqlite 的 "with conn.cursor() as..."方法?

python - 从关键事件中获取特殊字符

python - 将 Flask 与 PyMongo 结合使用

python - .env 文件中的环境变量在 django、heroku 的本地迁移期间不可用

python - 在不下载正文的情况下检查scrapy中的响应头

python - "No matching distribution found for sqlite3"与 python3 和 virtualenv

javascript - Android phonegap 应用程序在三星 Galaxy 设备上存在 SQlite 和本地存储问题

SQLITE 更新、限制、大小写

sql - 简单的sqlite查询,升序排列

python - 正则表达式字符匹配计数器