You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Python中使用SQLite3按关键词查询时遇no such column错误求助

SQLite LIKE查询报错解决:no such column: [关键词]

你遇到的问题根源是直接用f-string拼接SQL语句时,没有把关键词当作字符串值处理。比如你传入key_word="test3",生成的SQL语句是:

SELECT * FROM {table_name} WHERE column1 LIKE test3

这里的test3没有加引号,SQLite会把它识别为列名而非要匹配的字符串,自然会报错“no such column: test3”。

解决方案1:使用参数化查询(强烈推荐)

用SQLite的参数占位符?传递值,既避免语法错误,又能防止SQL注入:

# 模糊匹配(包含关键词)
curs.execute(f"""SELECT * FROM {table_name} WHERE column1 LIKE ?""", (f"%{key_word}%",)).fetchall()

# 精确匹配
# curs.execute(f"""SELECT * FROM {table_name} WHERE column1 LIKE ?""", (key_word,)).fetchall()

注意:参数要放在元组里,作为execute的第二个参数传递,不要拼进SQL字符串中。

解决方案2:手动添加引号(不推荐)

如果一定要用字符串拼接,必须给关键词加上单引号,让SQL识别为字符串:

curs.execute(f"""SELECT * FROM {table_name} WHERE column1 LIKE '%{key_word}%'""").fetchall()

但这种方式存在SQL注入风险,比如当关键词包含单引号时会触发语法错误,不建议在生产环境使用。

内容的提问来源于stack exchange,提问作者elias

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 00:25:17