事务回滚
#0 GitHub
https://github.com/Coxhuang/django-transaction.git
#1 环境
Python3.6
Django==2.0.6
#2 需求
- 用户的数据包括基本资料表A,特殊资料表B;在新增用户时,需要对表A和表B进行操作,如果A添加数据成功,但是B添加数据失败,此时,我们希望A的数据也被删除
- 在支付的时候,如果支付中发生异常,那么异常之前的操作,我们也希望回到原始状态
#3 事务回滚
事务回滚就是在操作数据库时,如果发生异常,能让数据回到原来的状态
#4 使用
#4.1 新建一个django项目
没有使用事务回滚
def new_stu(request):
models.Student.objects.create(name="cox_raise")
raise Http404("异常")
return HttpResponse("success")

使用事务回滚,但没有发生异常
from django.db import transaction
def new_stu(request):
with transaction.atomic(): # 事务回滚
models.Student.objects.create(name="cox2")
return HttpResponse("success")

使用事务回滚,发生异常
from django.db import transaction
def new_stu(request):
with transaction.atomic(): # 事务回滚
models.Student.objects.create(name="cox_404")
raise Http404("异常")
return HttpResponse("success")

并没有生成数据
本文深入探讨了在Django项目中如何运用事务回滚功能,确保数据操作的一致性和安全性。通过具体示例,展示了在用户数据管理和支付场景下,如何避免部分操作成功导致的数据不一致问题。
575

被折叠的 条评论
为什么被折叠?



