示例代码:
Session = scoped_session(sessionmaker(bind=engine))
session1 = Session()
session2 = Session()
session1 is session2 # => True
在SQLAlchemy中,scoped_session
有2个效果:
Session()
时,会返回相同的会话。问题: 我理解效果1避免在同一个会话上运行的差异线程可能导致竞争条件(我是对的吗?)。但是效果2的本质是什么(或者我们为什么要在一个线程中使用相同的会话)?
答案 0 :(得分:1)
在一个线程中,只有一个会话可以同时访问数据库,刷新,提交和关闭。然后是下一个。所以在这种情况下,一个会话就足够了。然后让它成为单身。