我有一个SQL数据库" Garage.db"有3个表: 客户,汽车和MOT
当有人输入Car表中的注册时,我想更新MOT表中的字段BookedMOT。有人可以帮我处理可以执行此操作的SQL查询,谢谢。
我使用tkinter在python 3.6中对此进行编码。这是我的尝试,
def Booked(self):
date = Date.get()
month = Month.get()
year = Year.get()
BookedMOT = (date + '/' + month + '/' + year)
Registration = self.RegistrationEnt.get()
with sqlite3.connect('Garage.db') as db:
cursor = db.cursor()
add_date = ('UPDATE MOT SET MOT.BookedMOT = ? FROM Car WHERE Car.Registration = ?')
cursor.execute(add_date,[(BookedMOT), (Registration)])
db.commit()
答案 0 :(得分:0)
(这解决了我之前注意到的一些Python问题,甚至没有意识到SQL看起来不对,应该先修复它)
试试这个:
with sqlite3.connect('Garage.db') as db:
db.execute(add_date, (BookedMOT, Registration))
通常,当您说with ... as x:
时,您应该在x
块中使用with
。在块完成后,它执行了自动提交,然后尝试使用db
或cursor
可能不正确。 with
也意味着您不再需要db.commit()
。
sqlite3 connection objects (db
in this case) have an execute
method:
这是一个非标准的快捷方式,它通过调用cursor()方法创建一个游标对象,使用给定的参数调用游标的execute()方法,并返回游标。
最后,你有一些可以删除的冗余括号。