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

sqlite3.OperationalError: no such column错误原因求助

解决sqlite3.OperationalError: no such column错误

嘿,我一眼就看出问题出在哪了——你在执行INSERT语句的时候用了字符串拼接的方式插入值,这会让SQL把你的文本类型数据当成列名来解析!

举个例子,如果你的银行账户名是My Savings,那你拼接出来的SQL语句会变成:

INSERT INTO Bank VALUES (My Savings, 1000)

SQL会把My当成一个列名,但你的Bank表里根本没有这个列,自然就抛出no such column的错误了,而且文本值没加引号,完全不符合SQL的语法规范。

正确的做法:用参数化查询

sqlite3支持使用占位符?来传递参数,这样不仅能避免语法错误,还能防止SQL注入风险,一举两得。把你代码里的INSERT语句改成下面这样:

cur.execute("INSERT INTO Bank VALUES (?, ?)", (bankaccount, starting_money))

这里的?会自动帮你处理不同数据类型的格式问题,比如给文本值加上引号,数字则保持原样,完美解决你的报错问题。

另外顺便提一句:你的代码里在判断用户文件存在时直接调用了main_loop(),但此时还没检查数据库里是否存在Bank表,如果用户的数据库文件里没有这个表,后续操作也会报错,这个地方可以考虑加个表存在性检查的逻辑哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 10:47:30