gpt4 book ai didi

python - 如何使用 SQLAlchemy 处理两阶段提交

转载 作者:太空宇宙 更新时间:2023-11-03 11:34:14 25 4
gpt4 key购买 nike

我正在尝试使用 SQLalchemy 0.6.8 和 Postgresql 8.3.4 进行两阶段提交,但我想我遗漏了一些东西......
工作流程是这样的:

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

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',但仍然没有写入任何内容。

最佳答案

我设法让它工作了,方法如下:

session = sessionmaker(engine)(twophase=True)
session.add(obj1)
session.prepare()
# Find transaction id
for k, v in s.transaction._connections.iteritems():
if isinstance(k, Connection):
return v[1].xid

然后从另一个 session

session = sessionmaker(engine)(twophase=True)
session.connection().commit_prepared(xid, recover=True)

关于python - 如何使用 SQLAlchemy 处理两阶段提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9036753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com