自己来控制事务 这种情况下,你自己灵活控制事务.在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): …