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

Python编写数据库信息修改函数执行时报1064 SQL语法错误如何解决

报错原因
  • pymysql的cursor.execute()方法仅接受两个核心位置参数:第一个是SQL语句,第二个是包含所有占位符对应值的元组或列表。你当前直接把8个参数分散传递给execute方法,导致只有第一个参数被识别为SQL参数,剩余参数未被代入SQL语句,最终生成的SQL语句存在未替换的%s占位符,MySQL解析时触发语法错误。
修复方法

将所有需要传入SQL的参数用括号包裹组装为元组,再传给execute方法即可,修正后的代码如下:

def update(self):
    con = pymysql.connect(
        host = 'localhost',
        user = 'root',
        password = '',
        database = 'employ')
    cur = con.cursor()
    cur.execute("update employees set family_members=%s, social_status=%s, gender=%s, date_birth=%s, id_number=%s, mail=%s, name=%s where id=%s",
                (
                    self.family_members_var.get(),
                    self.social_status_var.get(),
                    self.gender_var.get(),
                    self.date_birth_var.get(),
                    self.id_number_var.get(),
                    self.mail_var.get(),
                    self.name_var.get(),
                    self.id_var.get()
                )
            )
    con.commit()
    self.fetch_all()
    self.clear()
    con.close()
补充说明
  • 当SQL仅存在1个占位符时,传参需要写成(参数值,)的格式,末尾必须加逗号,否则括号会被识别为普通运算符号,不会被当成元组,同样会触发同类语法错误。
  • 建议新增异常捕获逻辑,SQL执行报错时主动回滚事务,避免出现数据不一致的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:54:06