在 sqlalchemy 中何时使用 `session_maker` 以及何时使用 `Session`

Fel*_* B. 11 python orm sqlalchemy

Sqlalchemy 的文档说可以通过两种方式创建会话:

from sqlalchemy.orm import Session
session = Session(engine)
Run Code Online (Sandbox Code Playgroud)

或与会议主持人

from sqlalchemy.orm import session_maker
Session = session_maker(engine)
session = Session()
Run Code Online (Sandbox Code Playgroud)

现在,无论哪种情况,都需要一个全局对象(引擎或 session_maker 对象)。所以我真的不明白 session_maker 的意义是什么。也许我误解了一些东西。

我找不到任何建议何时应该使用其中之一。所以问题是:您想在哪种情况下使用Session(engine)以及您更喜欢哪种情况session_maker

rfk*_*aas 8

文档很好地描述差异:

Session是一个常规的Python类,可以直接实例化。但是,为了标准化会话的配置和获取方式,sessionmaker类通常用于创建顶级会话配置,然后可以在整个应用程序中使用该配置,而无需重复配置参数。