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')
  • 相关阅读:
    第七章 下
    第七章 上
    第六章 下
    第六章 上
    第五章 下
    linux 系统通过安装包安装mysql 8 步骤(非MariaDB)
    热烈庆祝博客换了新皮肤
    异常处理
    栈计算逆波兰表达式
    栈计算中缀表达式
  • 原文地址:https://www.cnblogs.com/tangpg/p/9019068.html
Copyright © 2011-2022 走看看