4
我正在嘗試使用SQLalchemy 0.6.8與Postgresql 8.3.4進行兩階段提交,但我認爲我錯過了一些東西......
工作流程像這樣:如何使用SQLAlchemy處理兩階段提交
session = sessionmaker(engine)(autocommit=True)
tx = session.connection().begin_twophase(xid) # Doesn't issue any SQL
session.begin()
session.add(obj1)
session.flush()
tx.prepare()
從另一個會話
session = sessionmaker(engine)(autocommit=True)
session.connection().commit_prepared(xid, recover=True) # recover=True because otherwise it complains that you can't issue a COMMIT PREPARED from inside a transaction
這不會引發任何錯誤,但不會寫什麼表要麼... O_O 我缺少什麼
呢?
我試過在prepare()
之後甚至封鎖了應用程序,並從pgadmin發出了COMMIT PREPARED 'xid'
,但仍然沒有任何內容被寫入。
如何兩相會話應該
然後從另一個會話中工作,如果你正在沖洗和autocommitting?此外,會話在內部使用交易。你使用兩個不同的抽象層次? – 2012-01-27 18:02:08
如果我禁用自動提交,對connection()的調用發出「BEGIN(隱式)」,然後begin_twophase提出「當事務已經在進行時無法啓動兩階段事務。」...我會嘗試跳過沖洗雖然 – Joril 2012-01-30 09:25:25
跳過刷新不會改變任何東西:(我應該使用sessionmaker(twophase = True)嗎? – Joril 2012-01-30 09:49:17