Django实战-提供数据库事务功能

  • 2019 年 10 月 7 日
  • 笔记

Django实战-小程序助手回顾

Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。

from django.db import transaction

使用事务可以有效的防止插入数据时出现错误,影响数据的完整性,再出现错误的时候可以回滚事务,做到要么全部插入成功要么全部都不插入。

一、事务修饰器

视图代码中使用保存点来担任子事务的角色,atomic()上下文管理器。那么,最后所有更改要么被提交,要么被回滚。可以简单使用atomic()装饰器来装饰每一个视图方法。

class TransactionAtomicMixin(object):      """提供数据库事务功能"""      @classmethod      def as_view(cls, **initkwargs):          view = super(TransactionAtomicMixin, cls).as_view(**initkwargs)          return transaction.atomic(view)

在Django中,还提供了保存点的支持,可以在事务中创建保存点来记录数据的特定状态,数据库出现错误时,可以恢复到数据保存点的状态。

from django.db import transaction    # 创建保存点  save_id = transaction.savepoint()    # 回滚到保存点  transaction.savepoint_rollback(save_id)    # 提交从保存点到当前状态的所有数据库事务操作  transaction.savepoint_commit(save_id)