如何回滚异步事务
How to rollback asyncpg transaction
我正在使用 asyncpg 执行外部 sql 代码(小型和内部迁移系统)。因此,如果 sql 代码出错,我想回滚当前事务中的所有数据库更改。但是我无法让事务对象调用 rollback()。请帮忙!
我的代码是:
async with conn.transaction():
try:
await conn.execute(script)
except asyncpg.exceptions.PostgresSyntaxError:
logger('Got exception!')
# what i have to write here to call rollback!?
非常感谢。
在 async with conn.transaction():
部分内部,如果发生异常,事务会自动回滚。
但您可以手动控制流量:
tr = conn.transaction()
try:
await tr.start()
await conn.execute('WRONG SQL STATEMENT / DO INTEGRITY ERROR HERE')
except Exception as e:
logger.error('Got exception {}', e)
await tr.rollback()
else:
tr.commit()
我正在使用 asyncpg 执行外部 sql 代码(小型和内部迁移系统)。因此,如果 sql 代码出错,我想回滚当前事务中的所有数据库更改。但是我无法让事务对象调用 rollback()。请帮忙!
我的代码是:
async with conn.transaction():
try:
await conn.execute(script)
except asyncpg.exceptions.PostgresSyntaxError:
logger('Got exception!')
# what i have to write here to call rollback!?
非常感谢。
在 async with conn.transaction():
部分内部,如果发生异常,事务会自动回滚。
但您可以手动控制流量:
tr = conn.transaction()
try:
await tr.start()
await conn.execute('WRONG SQL STATEMENT / DO INTEGRITY ERROR HERE')
except Exception as e:
logger.error('Got exception {}', e)
await tr.rollback()
else:
tr.commit()