从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
相关产品推荐
相关产品推荐

