sqlite3.OperationalError语法错误:UPDATE语句参数使用问题排查
问题分析与解决
你的SQL UPDATE语句存在语法错误,核心问题是SET子句的写法不符合SQL规范:SQL里UPDATE的SET部分必须明确指定「列名=值」的对应关系,不能直接把所有占位符放在括号里。
正确写法示例
假设你要更新的列依次是nume、tip、numar、pret,参数顺序要和占位符一一对应,同时注意不需要重复传入id作为要更新的列(WHERE条件已经用IdProdus=id定位目标行):
c.execute("UPDATE piesemagazin SET nume=?, tip=?, numar=?, pret=? WHERE IdProdus=?", (nume, tip, numar, pret, id))
为什么之前的方法没用
- 换成
INSERT OR REPLACE解决不了基础语法错误,你本质是要更新而非替换插入,且原语句的语法问题依然存在 - 用
.format拼接SQL不仅会引入SQL注入风险,也没解决UPDATE语句的语法错误
内容的提问来源于stack exchange,提问作者Timpu Eusebiu
相关产品推荐
相关产品推荐

