start_transaction

classmethod AsyncDataTableOracle.start_transaction(cls, flatten=False)

开启事务

上下文管理器,使用with语法开启上下文,上下文中的sql将作为事务执行。 退出with语句块后,事务将立即执行,执行过程中如果报错会直接抛出, 执行结果可通过 transaction_result 查询。

示例

tbl = DataTableMySQL('table_example')
t = tbl.table
async with tbl.start_transaction():
    await tbl.insert({'key': 101, 'value': 'txn'})
    await tbl.update({'value': 'new_txn'}, where=t.key == 101)
    await tbl.delete(where=t.key >= 99)
result = tbl.transaction_result
参数

flatten (bool) – 是否拉平嵌套事务,如果开启,嵌套的事务将会作为一个事务执行

重要

insert/delete/update 系列 (包括 insert_df, copy_rows 等)的sql支持在事务中执行,

支持事务运行的方法可以通过源码查看,带有 @txn_support 装饰器的方法即支持事务。

如果在事务中执行select,查询结果也将立刻返回。