我有一个简单的查询从视图加载记录(PostgreSQL):
rows = DBSession.query(MyView).all()
接下来,我正在处理行,将它们复制到 rows1:
for row in rows:
# some calculation...
rows1.append( row )
最后,将结果返回给 jinja2 渲染器:
return {"rows": rows1}
当并发请求很少时,在jinja渲染过程中有一些请求失败并出现这个错误:
sqlalchemy.orm.exc.DetachedInstanceError: Instance <MyView at 0x7f1e20237790> is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/14/bhk3)
我怀疑这个问题在某种程度上与并发有关:如果我将女服务员设置为一个线程,一切正常。
有没有办法在传递给 jinja 之前强制加载所有数据?