Sqlalchemy的文档说明可以通过两种方式创建会话:
from sqlalchemy.orm import Session
session = Session(engine)
或使用sessionmaker
from sqlalchemy.orm import session_maker
Session = session_maker(engine)
session = Session()
现在,无论哪种情况,都需要一个全局对象(引擎或session_maker对象)。所以我真的不明白session_maker的意义是什么。也许我误解了什么。
我找不到任何建议,当一个人应该使用一个或另一个。所以问题是:在哪种情况下你想使用Session(engine)
,在哪种情况下你更喜欢session_maker
?
文档很好地描述了差异:
Session是一个普通的Python类,可以直接实例化。然而,为了标准化会话的配置和获取方式,sessionmaker类通常用于创建一个顶级会话配置,然后可以在整个应用程序中使用该配置,而无需重复配置参数。