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 中国大陆许可协议进行许可。

posted @   小满三岁啦  阅读(21)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
🔑
  1. 1 夜空中最亮的星 小果酱
夜空中最亮的星 - 小果酱
00:00 / 00:00
An audio error has occurred.