[英]Python - SQLite - Issue with a query not working properly
此代码块接受用户输入并使用它来更新数据库中的信息。
def Update_Save_Button(self, event = None):
ticketinfo2 = self.ticketeu2.get()
ticketinfo3 = self.ticketeu3.get()
ticketinfo4 = self.ticketeu4.get()
ticketinfo5 = self.ticketeu5.get()
ticketinfo6 = self.ticketeu6.get()
if len(ticketinfo2) == 0 or \
len(ticketinfo3) == 0 or \
len(ticketinfo4) == 0 or \
len(ticketinfo5) == 0 or \
len(ticketinfo6) == 0:
messagebox.showerror("Error", "Please check that all fields have been entered.")
else:
self.cursor.execute ('''
UPDATE
"Service Tickets"
SET
"Reason for Visit" = ?,
"WarrantyVPO" = ?,
"Date Ticket Received" = ?,
"Date of Service" = ?,
"Service Person" = ?
WHERE
"ServiceTicketsId" = ?;
''',
(ticketinfo2, ticketinfo3, ticketinfo4, ticketinfo5, ticketinfo6, self.text1,))
self.con.commit()
self.Tree_Refresh (self.SecondTree,
('''
SELECT
*
FROM
"Service Tickets"
WHERE
JobID = ?
'''),
(self.JobID,))
self.LoadUpdate.destroy()
我还有许多其他正在运行查询的代码块,它们都运行正确。 但是,此代码块运行不正确。 不仅如此,终端中也没有产生错误。 过去我在以前的查询中遇到过语法不正确的问题,我尝试使用我学到的知识来解决当前的问题。 我还尝试过添加、移动和删除代码行。 我会包括细节,但不幸的是,我做了很多事情,以至于我忘记了我所做的一切。
但是,我会说,当我删除查询的 WHERE 部分时,UPDATE 起作用了。 它更新了表中的所有数据,尽管有些数据似乎不正确。
我会很感激任何建议。
由于从 UPDATE 语句中删除“WHERE”子句使其更新所有行,我假设条件“ServiceTicketsId =?” 总是假的。 检查参数值并确保“self.text1”(我相信这是您传递给 WHERE 子句的值)包含现有的票证 ID。
烦人的是,解决方案是将 self.text1 转换为字符串
else:
self.text1 = str(self.text1)
self.cursor.execute ('''
UPDATE
"Service Tickets"
SET
"Reason for Visit" = ?,
"WarrantyVPO" = ?,
"Date Ticket Received" = ?,
"Date of Service" = ?,
"Service Person" = ?
WHERE
"ServiceTicketsId" = ?;
''',
(ticketinfo2, ticketinfo3, ticketinfo4, ticketinfo5, ticketinfo6, self.text1,))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.