Python 在结束会话后使用SQLAlchemy实例

Python 在结束会话后使用SQLAlchemy实例,python,sqlalchemy,Python,Sqlalchemy,是否可以在关闭会话后访问SQLAlchemy的实例? 我只想访问实例属性,而不是更改它们的值 在执行期间使用单个会话可以解决问题,但这是一种好的做法吗?(考虑到程序可能运行数天) 示例代码: 积垢 @contextmanager def会话_作用域(): 会话=会话() 尝试: 收益期 session.commit() 除例外情况外: 会话。回滚() 提升 最后: session.close() accessdb.py 类访问数据库(对象): def add_user(self、name、pa

是否可以在关闭会话后访问SQLAlchemy的实例? 我只想访问实例属性,而不是更改它们的值

在执行期间使用单个会话可以解决问题,但这是一种好的做法吗?(考虑到程序可能运行数天)

示例代码:

积垢

@contextmanager
def会话_作用域():
会话=会话()
尝试:
收益期
session.commit()
除例外情况外:
会话。回滚()
提升
最后:
session.close()
accessdb.py

类访问数据库(对象):
def add_user(self、name、password,is_admin=False):
将会话_scope()作为s:
用户=用户(用户名=名称,密码=密码,is_admin=is_admin)
s、 添加(用户)
def删除用户(自我,用户名):
将会话_scope()作为s:
s、 查询(用户)。筛选依据(用户名=用户名)。删除()
def列表_用户(自身):
将会话_scope()作为s:
返回s.query(用户).all()
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
a=AccessDB()
a、 添加用户(“用户1”、“123”)
a、 添加用户(“用户2”、“123”)
a、 删除用户(“用户1”)
用户=a.列出用户()
打印(用户[0]。用户名)
当我返回数据库中的所有用户时,会出现以下错误:

sqlalchemy.orm.exc.DetachedInstanceError:实例未绑定到会话;属性刷新操作无法继续(此错误的背景信息位于:http://sqlalche.me/e/bhk3)

commit()
rollback()
这样的方法会使所有对象过期。要刷新对象,必须使用
session.refresh(用户[0])
。然后您将能够再次访问对象属性。

commit()
rollback()
这样的方法会使所有对象过期。要刷新对象,必须使用
session.refresh(用户[0])
。然后您就可以再次访问对象属性。

@supershot,这就是我要找的,谢谢。不用担心,我不是有意链接到底部的答案,我希望您看到的是投票率较高的答案!是的,我知道了。问题解决了。@supershot,这就是我要找的,谢谢。不用担心,我不是想链接到最下面的答案,我希望你看到的是投票率较高的答案!是的,我知道了。问题解决了。