Python SQLite 如何使用 '?' 占位符进行部分搜索?

标签 python sqlite

假设我的查询如下所示:

q = SELECT * FROM MY_TABLE WHERE FIELD LIKE ?
cursor.execute(q, some_query_value)

这似乎不是在进行“包含”搜索,所以我尝试这样做

q = SELECT * FROM MY_TABLE WHERE FIELD LIKE %?%
cursor.execute(q, some_query_value)

但是python好像不喜欢这样。正确的做法是什么?

最佳答案

% 通配符是要插入的值的一部分;使用字符串连接或格式化将其添加到要搜索的值中,而不是在查询中:

q = "SELECT * FROM MY_TABLE WHERE FIELD LIKE ?"
cursor.execute(q, ('%' + some_query_value + '%',))

q = "SELECT * FROM MY_TABLE WHERE FIELD LIKE ?"
cursor.execute(q, ('%{}%'.format(some_query_value),))

现在 sqlite3 可以正确引用带通配符的值进行插值。

关于Python SQLite 如何使用 '?' 占位符进行部分搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29849754/

相关文章:

python - 直接调用和分配给变量之间的速度差异

ios - 核心数据中的主键位置

iphone - 我有一张需要优化的庞大 table 。我想我需要使用索引,但我希望获得有关它们的更多信息

python - 从 SQL 查询创建类的实例

python - 在 df.loc 过滤条件中填充缺失数据?

Python for 循环控制变量在声明前访问

Python 打印变量时出现 Unicode 错误

java - 如何通过游标获取android中的Timestamp列值?

javascript - 如何使用sqlite在插入查询中获取插入的行id?

python - 列表中子列表中特定位置中给定项目的计数