Python SQLite3通讯录程序UPDATE更新数据报set附近语法错误如何修复
问题原因
你代码中的SQL语句不符合SQLite的UPDATE语法规范,同时缺少事务提交逻辑,具体问题有两个:
- 重复使用
SET关键字:UPDATE语句更新多个字段时仅需声明一次SET,多个字段的赋值逻辑用逗号分隔即可,你写了两次SET直接触发语法报错 - 缺少事务提交:SQLite默认开启事务,增删改类操作执行后必须调用连接对象的
commit()方法,修改才会真正写入数据库
修复后代码
def update_contact(): name = input('update which name?') a = input('phone') b = input('address') # 修正SQL语法,去掉多余的SET,用逗号分隔两个更新字段 cur.execute("UPDATE contact_book SET phone = ?, address = ? WHERE name = ?", (a, b, name,)) # 新增事务提交,持久化修改 con.commit() view_contact()
可选优化
可以加逻辑判断是否真的更新到了数据,避免用户输入不存在的姓名时无提示:
def update_contact(): name = input('update which name?') a = input('phone') b = input('address') cur.execute("UPDATE contact_book SET phone = ?, address = ? WHERE name = ?", (a, b, name,)) con.commit() if cur.rowcount == 0: print(f"未找到姓名为{name}的联系人") view_contact()
内容的提问来源于stack exchange,提问作者Becky1122
相关产品推荐
相关产品推荐

