SQLAlchemy:在一个线程中访问同一个会话的本质是什么?

2024-10-02 16:21:33 发布

您现在位置:Python中文网/ 问答频道 /正文

示例代码:

Session = scoped_session(sessionmaker(bind=engine))
session1 = Session()
session2 = Session()
session1 is session2 # => True

在SQLAlchemy中,scoped_session有两种效果:

  1. 不同的线程获得不同的会话
  2. 调用Session()时返回相同的会话

问题: 我理解效果1避免在同一会话上运行不同线程,这可能会导致争用情况(我说的对吗?)。但是效果2的本质是什么(或者为什么我们希望在一个线程中进行相同的会话)


Tags: 代码true示例sqlalchemyisbindsession线程
1条回答
网友
1楼 · 发布于 2024-10-02 16:21:33

在一个线程中,只有一个会话可以同时访问DB、刷新、提交和关闭。然后是下一个。所以在这种情况下,一个会话就足够了。那就让我们成为单身汉吧

相关问题 更多 >