gpt4 book ai didi

python - Pyramid/SQL Alchemy DetachedInstanceError

转载 作者:太空狗 更新时间:2023-10-30 01:45:06 29 4
gpt4 key购买 nike

我正在尝试使用 Pyramid 框架实现电子邮件确认。下面是确认数据库中的用户并将他们重定向到主页的代码。

   user = DbSession.query(User).filter_by(email=email).one()     
if user.approved:
return {'msg': _('Already approved')}
if user.check_approve_token(hash):
user.approved = True
self.request.session.save()
self.request.session['user'] = user
return HTTPFound(self.request.route_url('home'),
headers=remember(self.request, user.guid))

当我尝试获取 self.request.session['user'] 时来自另一个处理程序的变量,我得到一个 DetachedInstanceError: Instance <User at 0x42902f0> is not bound to a Session; attribute refresh operation cannot proceed .据我了解,此错误是由于对 User 的修改而引发的实例。我该如何解决?

提前致谢,伊万。

最佳答案

错误是因为模型对象(用户)是由 session (DbSession)管理的。当您将实例存储在 session (request.session) 中,然后在另一个请求中再次访问它时,这是使用不同的 DbSession。支持在 session 之间移动托管对象,但不会自动移动。从 request.session 检索对象时,您可以通过 user = DbSession.merge(user) 将其合并到新的 DbSession 中。

http://docs.sqlalchemy.org/en/latest/orm/session.html?highlight=merge#merging

关于python - Pyramid/SQL Alchemy DetachedInstanceError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9704927/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com