Python 数据库更改后Flask应用程序需要重新启动吗?

Python 数据库更改后Flask应用程序需要重新启动吗?,python,web-applications,flask,Python,Web Applications,Flask,我有一个图书馆管理应用程序。我没有使用ORM,这是一个数据库项目,不允许使用ORM签出一本书,我正在进行表单验证。像这样: class CheckoutForm(Form): book_id = TextField('book_id', validators = [Required()]) branch_id = TextField('branch_id', validators = [Required()]) card_no = TextField('card_no',

我有一个图书馆管理应用程序。我没有使用ORM,这是一个数据库项目,不允许使用ORM签出一本书,我正在进行表单验证。像这样:

class CheckoutForm(Form):
    book_id = TextField('book_id', validators = [Required()])
    branch_id = TextField('branch_id', validators = [Required()])
    card_no = TextField('card_no',validators = [Required()])

    def __init__(self, *args, **kwargs):
        Form.__init__(self, *args, **kwargs)

    def validate(self):
        rv = Form.validate(self)
        if not rv:
            return False

       # Get total copies of the book check if not 0
       cur.execute("""select SUM(No_of_copies) from book b, book_copies c where     b.Book_id = c.Book_id and
       b.Book_id = %s and c.Branch_id = %s""",\
            (self.book_id.data.strip(), self.branch_id.data.strip()))
        copies = cur.fetchone()[0]
        if copies == 0:
            self.branch_id.errors.append("Book not at this Branch.")
            return False

        # Get total available copies of the book in given branch check if not 0
        cur.execute("""select count(*) from book_loans l, book b, book_copies c where    b.Book_id = l.Book_id  and b.Book_id = c.Book_id and Date_in is NULL and b.Book_id = %s and c.Branch_id = %s""",(self.book_id.data.strip(),self.branch_id.data.strip()) )
        checked_out = cur.fetchone()[0]
        print checked_out
        avail_copies = copies - checked_out
        print avail_copies
        if avail_copies <= 0:
            self.branch_id.errors.append("No copies available right now.")
            return False

现在,如果我手动删除book_loans表中的行,并且不重新启动应用程序,我会在db更改之前继续查看旧值,以获取有用的拷贝和副本。为什么会发生这种情况?

据我所知,您可以在cmdline或gui mysql工作台等中打开应用程序,从数据库中删除一些条目,然后在应用程序中运行查询时,您仍然会得到与删除条目之前相同的数据?我是在mysql控制台中完成的。但确实如此,最有可能的罪魁祸首是查询缓存。看看这个: