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

从Tkinter输入框更新SQLite记录报错:tuple对象不可调用

解决SQLite UPDATE语句触发的'tuple' object is not callable错误

嘿,我一眼就揪出你代码里的两个问题,正是它们搞出了这个报错,咱们一步步来修复:

第一个问题:SQL语句的语法错误

你写的SQL语句里,Age,=?这里多了个多余的逗号!数据库根本认不出这种写法,必须把它删掉,改成Age=?。

第二个问题:参数元组的写法错误

你把每个参数单独做成小元组,还没加逗号分隔:((Name,) (TrainerID,) ...)。在Python里,这种相邻的元组写法会被当成「把第一个元组当作函数去调用第二个元组」,而元组根本不是可调用的对象,所以就触发了TypeError: 'tuple' object is not callable。

正确的做法是把所有参数放在同一个元组里,用逗号分隔每个元素就行,不用给每个参数单独套括号。

修正后的完整代码示例

def Update(self):
    # 先从Tkinter输入框获取各字段值
    Name = self.name_input.get()
    TrainerID = self.trainerid_input.get()
    Postcode = self.postcode_input.get()
    Age = self.age_input.get()
    Gender = self.gender_input.get()
    Password = self.password_input.get()
    
    # 修复后的execute语句
    self.cur.execute(
        "UPDATE Trainers SET Name=?, TrainerID=?, Postcode=?, Age=?, Gender=?, Password=?",
        (Name, TrainerID, Postcode, Age, Gender, Password)
    )
    # 务必提交事务,否则数据库不会保存修改
    self.conn.commit()

最后补个小提醒:执行完更新语句后,一定要调用conn.commit()提交事务,不然你的修改只会停留在内存里,不会真正写入数据库哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:19:49