from django.db import transaction

两种方式控制事务:为了保持数据一致性

  一个Book表,一个Author表。添加一本书,也要保证添加作者。By事物控制

  book = Book.object.get(id=1) # 单个Book.object

  book.字段.find('a') # 查询该字段是否包含'a' ,不包含返回 -1,包含返回 >=0

一:装饰器

只能装饰app下的View中的def方法。

@transaction.atomic
def forTransaction(request):
""" 事物装饰器transaction.atomic """
author = Author.objects.create(name='xixi1')
book = Book.objects.create(headline='练习事物22')
author.book.add(book)
   author,save()
# assert not book.headline.find("事物") >=0, "敏感信息"
if book:
raise Exception("强行错误") # 有错误就都不执行 return HttpResponse("ojbk")

 二:使用上下文管理器的方式

在view中,使用 with transaction.atomic():

class ForTransaction(View):
''' 使用上下文管理器,管理事务 '''
def get(self, request):
with transaction.atomic():
author = Author.objects.create(name='haha1')
book = Book.objects.create(headline='upDown')
author.book.add(book) # add 多对多关系使用
author.save()
assert not book.headline.find("up") >=0, "敏感信息" #包含‘up’返回>=0的值,则报错。 有错误就都不执行
return HttpResponse('ojbk')

django-控制mysql事物的更多相关文章

  1. MySQL事物控制

    有时候我们需要保证事物的各个步骤都执行成功的前提下才能让每一步骤的事物执行,此时就需要事物控制. 事物控制用于保证数据的一致性,它由一组相关的dml语句组成,该组的dml语句要么全部成功,要么全部失败 ...

  2. python——django使用mysql数据库(二)

    上一篇中,我们已经讲述了如何初始化一个django数据库,这一章就来讲讲在实际的项目中如何使用我们初始化的数据库呢? 如还未进行初始化数据库操作,请参考python——django使用mysql数据库 ...

  3. python——django使用mysql数据库(一)

    之前已经写过如何创建一个django项目,现在我们已经有了一个小骷髅,要想这个web工程变成一个有血有肉的人,我们还需要做很多操作.现在就先来介绍如何在django中使用mysql数据库. 前提:已经 ...

  4. Django ajax MYSQL Highcharts<1>

    Another small project with django/Ajax/Mysql/Highcharts. 看下效果图  - delivery dashboard .嘿嘿 是不是还蛮好看的. 废 ...

  5. django 的mysql数据配置

    原地址:http://blog.csdn.net/gamesofsailing/article/details/21465327 在成功安装python-mysql后,开始配置django的mysql ...

  6. mysql事物处理

    mysql事物主要用于处理操作量大,复杂度高的数据.比如说,在人员管理系统中,你删除一个人员,你既要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等.这样,这些数据库操作语句就构成一个事 ...

  7. Django配置mysql

    我的环境为windows10+pyhton3.6+Django1.11.4 由于mysqldb不支持python3,所以django连接MySQL就不能再使用mysqldb了.故而选择了mysqlcl ...

  8. Django连接mysql数据库

    1.app中对应的models.py配置相关表结构信息 from django.db import models class Question(models.Model): question_text ...

  9. 第一篇:Win10系统搭建Python+Django+Nginx+MySQL 开发环境详解(完美版)

    Win10+Python+Django+Nginx+MySQL 开发环境搭建详解 PaulTsao 说明:本文由作者原创,仅供内部参考学习与交流,转载引用请注明出处,用于商业目的请联系作者本人. Wi ...

  10. Django 连接mysql数据库中文乱码

    Django 连接mysql数据库中文乱码 2018年08月25日 20:55:15 可乐乐乐乐乐 阅读数:566   版本:CentOS6.8 python3.6.4 django1.8.2 数据库 ...

随机推荐

  1. 树状数组 Binary Indexed Tree/Fenwick Tree

    2018-03-25 17:29:29 树状数组是一个比较小众的数据结构,主要应用领域是快速的对mutable array进行区间求和. 对于一般的一维情况下的区间和问题,一般有以下两种解法: 1)D ...

  2. tcpdump 实现原理【整理】

    参考:http://blog.sina.com.cn/s/blog_523491650101au7f.html 一.tcpdump 对于本机中进程的系统行为调用跟踪,strace是一个很好的工具,而在 ...

  3. 牛客网——F小牛再战(博弈,不懂)

    链接:https://www.nowcoder.net/acm/contest/75/F来源:牛客网 题目描述 共有N堆石子,已知每堆中石子的数量,两个人轮流取石子,每次只能选择N堆石子中的一堆取一定 ...

  4. 数据库使用B+树原理

    转载:http://zhuanlan.51cto.com/art/201808/582078.htm https://www.cnblogs.com/vincently/p/4526560.html( ...

  5. vue router动态路由

    <div id="#app"> <router-link to="/user/header">路由1</router-link&g ...

  6. activity+fragment+listview+adapter+bean在同一个类中的套路

    1.xml activity_main.xml <?xml version="1.0" encoding="utf-8"?><FrameLay ...

  7. windows安装mysql方法 mysql5.7以后的安装方法

    mysql 安装步骤: 1.www.mysql.com   下载mysql 2.解压mysql到E盘,或者其他盘解压后   E:\mysql\bin   (bin一定要按照这个目录) 3.这bin目录 ...

  8. linux系统之间共享文件(CentOS6)

    Server IP: 192.168.2.128 nfs, rpcbind(portmap) installed Client IP: 192.168.2.254 nfs, rpcbind(portm ...

  9. 最大流之dinic

    先用bfs预处理出层次图,然后在层次图上用dfs找增广路径,理论复杂度O(n*n*m) const int INF=0xfffffff ; struct node { int s,t,cap,nxt ...

  10. 取出表A中第31到第40记录

    方法一: select top 10 * from A where RowId not in (select top 10 RowId from A) 方法二(使用临时表): with tempTab ...