事务

mac2024-05-09  6

自己来控制事务 这种情况下,你自己灵活控制事务.在settings.py 中不用配置 TransactionMiddleware 中间件了, 基本采用装饰模式来实现。 a)@transaction.autocommit ,django默认的事务处理, 采用此装饰模式会忽略掉全局的transaction 设置

from django.db import transaction

@transaction.autocommit def viewfunc(request): …

@transaction.autocommit(using=“my_other_database”) def viewfunc2(request): … b) @transaction.commit_on_success 在一个方法中,所有工作完成后,提交事务。

from django.db import transaction

@transaction.commit_on_success def viewfunc(request): …

@transaction.commit_on_success(using=“my_other_database”) def viewfunc2(request): … c) commit_manually() ,完全自己处理,但如果你没有调用commit()或者rollback(),将会抛出TransactionManagementError 异常.

from django.db import transaction

@transaction.commit_manually def viewfunc(request): … # You can commit/rollback however and whenever you want transaction.commit() …

# But you've got to remember to do it yourself! try: ... except: transaction.rollback() else: transaction.commit()

@transaction.commit_manually(using=“my_other_database”) def viewfunc2(request): …

最新回复(0)