SQLAlchemy并发和查询

时间:2013-07-08 20:00:40

标签: python sqlalchemy

我有许多单独的机器,每台机器都使用单独的实例化

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的代码先运行)。在Session“A”提交一个对象之前我遇到了问题,但是在我重新实现Session“B”之前,另一个Session“B”在查询中找不到它。

1 个答案:

答案 0 :(得分:0)

scoped_sessionSession包装在线程本地存储对象中;如果你正在做更多的工作来处理线程,你可能想要重构代码以对所有线程使用单个scoped_session实例,或者直接使用sessionmaker的结果,而不是再包装它一个用于所有线程,并为每个线程调用Session()