跳转至

事务

Django 默认是 autocommit 的。

手动 atomic

django.db.transaction.atomic(using=None, savepoint=True, durable=False)

Django 会创建一个 transaction 或 savepoint 来保证 atomicity。

from django.db import transaction

# 用作 decorator
@transaction.atomic
def viewfunc(request):
    # This code executes inside a transaction.
    do_stuff()

# 用作 context manager
def viewfunc(request):
    # This code executes in autocommit mode (Django's default).
    do_stuff()

    with transaction.atomic():
        # This code executes inside a transaction.
        do_more_stuff()

如果想保证 durable,即 atomic 内部的一旦在代码内部 commit,就一定会提交到数据库,则设置 durable=True