Python 官方文档:入门教程 => 点击学习
目录一、事务的四大特性二、数据库事务2.1使用装饰器(整体回滚,不处理异常)2.2使用with语句(部分回滚,不处理异常)2.3使用with语句(部分回滚,可以处理异常)2.4使用保
一般来说,事务是必须满足4个条件(ACID)::原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。
Django中对于数据库的事务,默认每执行一句数据库操作,便会自动提交,我们需要在保存订单中自己控制数据库事务的执行流程
调用@transaction.atomic,进行整体回滚
from djanGo.db import transaction
@transaction.atomic
def viewfunc(request):
# 这些代码会在一个事务中执行
#...
from django.db import transaction
def viewfunc(request):
# 这部分代码不在事务中,会被Django自动提交
#...
with transaction.atomic():
# 这部分代码会在事务中执行
#...
注:装饰器和with语句直接使用会导致异常没有办法处理,如果需要处理异常,则可以通过以下的方式进行
from django.db import transaction
def viewfunc(request):
# 这部分代码不在事务中,会被Django自动提交
#...
try:
with transaction.atomic():
# 这部分代码会在事务中执行
#...
except 异常:
# 处理异常的代码
需要注意的是要和装饰器进行配合
from django.db import transaction
@transaction.atomic
def viewfunc(request):
# 这部分代码不在事务中,会被Django自动提交
#...
try:
# 在事务开始前创建保存点
save_id = transaction.savepoint()
# 这部分代码会在事务中执行
#...
# 提交从保存点到当前状态的所有数据库事务操作
transaction.savepoint_commit(save_id)
except 异常:
# 回滚到保存点
transaction.savepoint_rollback(save_id)
# 处理异常的代码
到此这篇关于Django 事务回滚的具体实现的文章就介绍到这了,更多相关Django 事务回滚内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: Django 事务回滚的具体实现
本文链接: https://www.lsjlt.com/news/196822.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0