最佳答案
只是一个简单的问题: SQLAlchemy谈论调用 sessionmaker()
一次,但每次需要与数据库通话时调用结果 Session()
类。对我来说,这意味着第二,我会做我的第一个 session.add(x)
或类似的东西,我会首先做
from project import Session
session = Session()
到目前为止,我所做的是在我的模型 一次中调用 session = Session()
,然后总是在我的应用程序的任何地方导入相同的会话。因为这是一个 web 应用程序,所以 通常的意思是一样的(就像执行一个视图)。
但有什么区别呢?在函数完成之前一直使用一个会话而不是在数据库中使用它,然后在下次我想与数据库通信时创建一个新的会话,这样做的缺点是什么?
我知道如果我使用多个线程,每个线程都应该有自己的会话。但是使用 scoped_session()
,我已经确保这个问题不存在了,是吗?
请澄清我的假设是否有错误。