时间:2021-07-01 10:21:17 帮助过:22人阅读
定义路由:
from django.conf.urls import url
from app01 import views
urlpatterns = [
url(r‘^test/$‘, views.test),
]
定义test视图函数:
from django.shortcuts import render, HttpResponse
from . import models
def test(request):
try:
from django.db import transaction # 导入事务
with transaction.atomic():
user_obj = models.UserInfo.objects.create(username=‘Lena‘, email=‘example@live.com‘)
dept_obj = models.Dept.objects.create(title=‘IT‘)
except Exception as e:
return HttpResponse(‘error happened, db rollback‘)
return HttpResponse(‘OK‘)
说明:
user_obj
和dept_obj
记录的行为组合成一个不可分割的原子性操作,原子内执行的数据库操作发生任何异常,都会执行回滚操作。http://127.0.0.1:8000/test/
,将会得到OK响应,如果我们手动将dept_obj = models.Dept.objects.create(title=‘IT‘)
的title=‘IT‘
改为name=‘IT‘
,手动造成异常,那么会触发事物回滚,写入的user_obj
也会撤销。这一点可以查看数据库验证。
注意一点:事务需要数据库引擎支持,比如Innodb引擎就是支持的。
Django数据库补充之事务
标签:nod 数据库 art 数据库迁移 param with 项目 UNC user