Python 会话未提交-签出12b-flask web开发

Python 会话未提交-签出12b-flask web开发,python,flask,Python,Flask,我遵循Miguel Grinberg的《Flask Web开发》一书中描述的示例 我在12b(关于追随者的章节)签出,但该应用程序无法持久 改变模型后,它工作了。然而,我不确定这是否是正确的方法 class User(UserMixin, db.Model): #... def follow(self, user): if not self.is_following(user): f = Follow(follower=self, foll

我遵循Miguel Grinberg的《Flask Web开发》一书中描述的示例

我在12b(关于追随者的章节)签出,但该应用程序无法持久

改变模型后,它工作了。然而,我不确定这是否是正确的方法

class User(UserMixin, db.Model):
    #...
    def follow(self, user):
        if not self.is_following(user):
            f = Follow(follower=self, followed=user)
            db.session.add(f)

在添加:db.session.commit()之后,它工作了,但是,我可能缺少了一些东西,因为这是我到目前为止遇到的第一个“错误”。

否,在
follow()
方法中添加
db.session.commit()
是解决问题的一种方法,但不是一个好主意

最后,route函数中应该存在一个数据库提交。其思想是,在请求期间,所有更改都会在数据库会话中累积,只有在最后,当我们确定请求成功时,才会进行提交,以使所有这些更改永久化

我实际上录制了一段简短的视频,其中讨论了在每个请求的最后发出一次提交的想法,如果您想了解更多信息,请参阅


对于您的特定问题,您需要检查为什么在
follow()
方法返回后,主路由函数中没有提交。在那里添加提交应该可以解决您的问题。

不,在
follow()
方法中添加
db.session.commit()
可以解决您的问题,但不是一个好主意

最后,route函数中应该存在一个数据库提交。其思想是,在请求期间,所有更改都会在数据库会话中累积,只有在最后,当我们确定请求成功时,才会进行提交,以使所有这些更改永久化

我实际上录制了一段简短的视频,其中讨论了在每个请求的最后发出一次提交的想法,如果您想了解更多信息,请参阅


对于您的特定问题,您需要检查为什么在
follow()
方法返回后,主路由函数中没有提交。在那里添加提交应该可以解决您的问题。

我理解。然后再次查找,commit()出现在视图中,而不是模型中。当然,这很有道理。我看了你的视频,想了想,但没有“应用”到这个案例中。谢谢!这有助于我理解。然后再次查找,commit()出现在视图中,而不是模型中。当然,这很有道理。我看了你的视频,想了想,但没有“应用”到这个案例中。谢谢!那有帮助