在搜索另一个SQL表时更新SQL表

时间:2018-03-23 19:10:55

标签: python sql python-3.x sqlite

我有一个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()

1 个答案:

答案 0 :(得分:0)

(这解决了我之前注意到的一些Python问题,甚至没有意识到SQL看起来不对,应该先修复它)

试试这个:

with sqlite3.connect('Garage.db') as db:
    db.execute(add_date, (BookedMOT, Registration))

通常,当您说with ... as x:时,您应该在x块中使用with。在块完成后,它执行了自动提交,然后尝试使用dbcursor可能不正确。 with也意味着您不再需要db.commit()

sqlite3 connection objects (db in this case) have an execute method:

  

这是一个非标准的快捷方式,它通过调用cursor()方法创建一个游标对象,使用给定的参数调用游标的execute()方法,并返回游标。

最后,你有一些可以删除的冗余括号。