SQLAlchemy:为什么不使用作用域会话?

时间:2015-09-11 15:17:21

标签: python sqlalchemy

我一直试图了解在SQLAlchemy中使用sessions。 我挣扎的一件事 - scoped_session似乎是万无一失的 - 你要求一个会话,你每次都回到相同的线程本地版本,当你完成时关闭它用它。文档clearly state表示这是并发使用的方法,但在我看来,它还应该避免其他更简单的错误,比如在父函数已经创建一个新会话时错误地打开一个新会话。

我想使用scoped_session的唯一原因是,如果您需要多个单独的会话,例如如果您同时访问两个数据库 - 那是对的吗?为什么你会坚持使用常规Session对象?

1 个答案:

答案 0 :(得分:1)

scope_session的唯一缺点是它使用了一个本地线程,这是否也是一个缺点,也存在争议。

理解本地线程本质上是一个全局变量,为了更加清晰,我们会传递整个代码。您需要确保不会因为无意中将其传递到其他线程或意外将其存储在某个地方以供以后使用而滥用它。

了解更多信息see