17-Django如何开启事务
前置知识
事务的四大特性:ACID
原子性
- 不可分割的最小单位
一致性
- 跟原子性是相辅相成
隔离性
- 事务之间互相不干扰
持久性
- 事务一旦确认永久生效
事务的确认:commit
事务的回滚:rollback
django中开启事务
# 方式1
from django.db import transaction
# 在with代码块内写的所有的orm语句都属于同一个事务
with transaction.atomic():
# sql1
# sql2
# sqln
...
print('执行其它操作')
# 方式2
from django.views import View
from django.db import transaction
class Demo(View):
# 整个post方法都在事务中
@transaction.atomic()
def post(self, request):
...
# 设置回滚点
sid = transaction.savepoint()
# 事务回滚
# 回滚整个事务 但是不能在自动提交的事务中使用
transaction.rollback()
# 回滚到sid
transaction.savepoint_rollback()
# 事务提交
# 提交整个事务 但是不能在自动提交的事务中使用
transaction.commit()
# 释放保存点 sid ,自保存点被创建依赖执行的更改成为事务的一部分
transaction.savepoint_commit(sid)
配置文件
import psycopg2.extensions
# 根据需要设置隔离级别,如下配置是READ_COMMITTED
# 但是配置PostgreSQL,不能配置mysql,否则会报错
DATABASES = {
# ...
'OPTIONS': {
'isolation_level': psycopg2.extensions.ISOLATION_LEVEL_READ_COMMITTED,
},
}
本文作者:小满三岁啦
本文链接:https://www.cnblogs.com/ccsvip/p/18090681
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。