zoukankan      html  css  js  c++  java
  • django-控制mysql事物

    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')
  • 相关阅读:
    【BZOJ1006】神奇的国度(弦图)
    弦图
    【BZOJ2946】公共串(后缀数组)
    【POJ1743】Musical Theme(后缀数组)
    JAVA和Tomcat运维整理
    linux shell 之if-------用if做判断
    Linux curl命令详解
    Intel HEX文件解析
    Linux bridge-utils tunctl 使用
    怎样查询锁表的SQL
  • 原文地址:https://www.cnblogs.com/tangpg/p/9019068.html
Copyright © 2011-2022 走看看