事务
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。