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

Flask查询SQLite报错sqlite3.OperationalError: no such column: a如何解决

报错原因
  • 核心问题是你直接使用Python字符串拼接的方式构造SQL语句。当_name的值为a时,拼接后的最终SQL为SELECT * FROM students WHERE name= a,SQLite语法中,不带引号的a会被识别为列名而非字符串值,你的students表不存在名为a的列,因此触发该报错。
  • 这种写法同时存在SQL注入的高危安全漏洞,攻击者可构造特殊的_name参数执行任意SQL语句,窃取、篡改或删除数据库数据。
修复方案

不要自行拼接SQL语句,使用SQLite官方提供的参数化查询语法编写动态条件的SQL,修改cursor.execute行代码即可:

# ? 是SQLite的参数占位符,参数以元组形式传入execute的第二个参数
cursor.execute('SELECT * FROM students WHERE name = ?', (_name,))

该写法会自动为字符串类型的参数添加引号、转义特殊字符,既解决了当前的列名识别错误问题,也从根源上避免了SQL注入风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:45:04