繁体   English   中英

SQLAlchemy并发和查询

[英]SQLAlchemy Concurrency and Queries

我有很多单独的机器,每个机器都使用一个单独的实例

Session = scoped_session(sessionmaker(bind=engine))

如果机器A运行代码

session = Session()
session.add(Foo(pk=1))
session.commit()

我必须做的是确保机器B运行以下代码时...

session = Session()
result = session.query(Foo).get(1)

... result将保留机器A创建的Foo的新行(假定机器A的代码先运行)。 在会话“ A”提交对象之前,我遇到了问题,但是在重新实例化会话“ B”之前,另一个会话“ B”无法在查询中找到它。

scoped_sessionSession包装在线程本地存储对象中; 如果您需要做更多的工作来处理线程,则可能需要重构代码以对所有线程使用单个scoped_session实例,或者直接将sessionmaker的结果(不包装它)再次用于所有线程,然后调用Session()每个线程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM