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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:27:02