django—事务
django实现事务
模块
from django.db import transaction
开启事务
开启事务:with transaction.atomic()
class MyView(View):
def post(self, request):
# 在with代码块中开启事务,出了with自动结束事务
with transaction.atomic()
pass
开启事务:@transaction.atomic
class MyView(View):
@transaction.atomic
def post(self, request):
# 整个post方法都在事务中
pass
设置事务回滚点
sid = transaction.savepoint() # 可以设置多个
事务回滚
# 回滚整个事务 但是不能在自动提交的事务中使用
transaction.rollback()
# 回滚到sid
transaction.savepoint_rollback(sid)
事务提交
# 提交整个事务 但是不能在自动提交的事务中使用
transaction.commit()
# 释放保存点 sid ,自保存点被创建依赖执行的更改成为事务的一部分
transaction.savepoint_commit(sid)
# atomic的事务,只有在事务结束后,才会自动提交到数据库,进行数据的持久化
设置事务隔离
配置文件
import psycopg2.extensions
# 根据需要设置隔离级别,如下配置是READ_COMMITTED
# 但是配置PostgreSQL,不能配置mysql,否则会报错
DATABASES = {
# ...
'OPTIONS': {
'isolation_level': psycopg2.extensions.ISOLATION_LEVEL_READ_COMMITTED,
},
}