簡體   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