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')
  • 相关阅读:
    Python3 循环语句
    Python3 条件控制
    Python3 字典
    Python3 元组
    Python的字符串函数
    2019/10/24
    JS-字符串方法总结
    maven环境变量配置
    PowerDesigner逆向导入MYSQL数据库并显示中文注释(转载)
    web_custom_request函数详解(转载)
  • 原文地址:https://www.cnblogs.com/tangpg/p/9019068.html
Copyright © 2011-2022 走看看