https://yiyibooks.cn/xx/Django_1.11.6/topics/db/transactions.html#autocommit-details
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.xxx',
'NAME': '',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
#设置,执行事务
'ATOMIC_REQUESTS': True,
}
}
from django.db import transaction
@transaction.atomic
def add_book(request):
sid = transaction.savepoint()
try:
Book.objects.filter(pk=1).exclude(title="tt").update(publish_id=3, guige_id=1)
t = Book.objects.filter(pk=1).exclude(title__in=["tt", "ttt"]).update(publish_id=3, guige_id=1)
if t == 0:
# 两次数据库操作均回滚
transaction.savepoint_rollback(sid)
return HttpResponse("ok1")
transaction.savepoint_commit(sid)
return HttpResponse("ok2")
except Exception as e:
print(e)
# 两次数据库操作均回滚
transaction.savepoint_rollback(sid)
return HttpResponse("ok3")