SQLite执行UPDATE更新语句后表数据未保存问题求助
问题根因
- 核心错误为UPDATE语句的SET子句语法使用错误:多字段赋值需要用逗号分隔,而非
AND关键字。
你编写的SET commission = 0.690000 AND price = 165.000000会被SQLite解析为:
先计算布尔表达式
0.690000 AND price = 165.000000的结果,再将该布尔值赋值给commission字段,完全不会修改price字段的取值。
SQLite中布尔真值对应数值1、假值对应数值0,正好匹配你查询结果里commission仍为1、price仍为155的现象。
修复方案
将SET子句中的AND替换为逗号即可,正确写法如下:
UPDATE services SET commission = 0.690000, price = 165.000000 WHERE location = "City" AND service = "Board";
执行上述语句后就能同时更新两个字段的取值。
额外排查点
如果修改语法后数据仍未持久化到磁盘,可检查代码逻辑:PyQt的QSqlDatabase默认开启手动提交模式,执行增删改操作后需要调用db.commit()才能将修改真正写入数据库。
建议执行SQL后捕获返回的错误信息,可快速定位这类语法问题。
内容的提问来源于stack exchange,提问作者tankertoaD
相关产品推荐
相关产品推荐

