伙计们。我需要一些帮助。几天前,我在我们的服务器上部署了我的 web 项目,一切正常。但是第二天早上我登录了页面,我收到了一个错误“Mysql server has gone away...”,然后我检查了原因。我发现它是由Msyql“wait_timeout = 2880000”和“interactive_timeout = 2880000”的conf引起的,我也得到了一些解决方案,如“set pool_recycle = 7200 when create_engine”,但它不起作用。我继续搜索方法。有人说'我们必须在使用 if 后执行 session.close()'。我打算尝试一下,但是我遇到了另一个错误。我使用了 sqlalchemy.orm.relation,之间存在 many_to_many 关系类用户和角色。现在我添加 DBSession.close() 喜欢
@classmethod
def get_by_id(cls, id):
user_ = DBSession.query(cls).get(id)
DBSession.close()
return user_
但是现在当我这样做时
user = User.get_by_id(1)
user.roles
ERROR:Parent instance <User at 0xace51cc> is not bound to a Session;
lazy load operation of attribute 'roles' cannot proceed
那么我该如何解决我的问题。非常感谢!