zoukankan      html  css  js  c++  java
  • django

     1 def user_atomic():
     2     User.objects.create(name='purk1', email='pwu1@maxprocessing.com')
     3 
     4     User.objects.create(user_id='purk2', name='purk2', email='pwu2@maxprocessing.com')
     5 
     6     User.objects.create(name='purk3', email='pwu3@maxprocessing.com')
     7 
     8 
     9 @transaction.atomic
    10 def user_atomic_decorator():
    11     User.objects.create(name='purk1', email='pwu1@maxprocessing.com')
    12     
    13     User.objects.create(user_id='purk2', name='purk2', email='pwu2@maxprocessing.com')
    14 
    15     User.objects.create(name='purk3', email='pwu3@maxprocessing.com')
    16 
    17 
    18 @transaction.atomic
    19 def user_atomic_decorator_1():
    20     User.objects.create(name='purk1', email='pwu1@maxprocessing.com')
    21 
    22     try:
    23         with transaction.atomic():
    24             User.objects.create(user_id='purk2', name='purk2', email='pwu2@maxprocessing.com')
    25     except Exception as e:
    26         e
    27     User.objects.create(name='purk3', email='pwu3@maxprocessing.com')
    28 
    29 @transaction.atomic
    30 def user_atomic_decorator_except():
    31     User.objects.create(name='purk1', email='pwu1@maxprocessing.com')
    32     try:
    33         User.objects.create(user_id='purk2', name='purk2', email='pwu2@maxprocessing.com')
    34     except Exception as e:
    35         e 
    36     User.objects.create(name='purk3', email='pwu3@maxprocessing.com') 
    atomic

    user_id 为uuid类型,所以user_id='purk2'肯定会出错,

    result:

    在atomic中错误的使用try except则会抛出TransactionManagementError的异常,同时transaction失效了,没有正常回滚。

    用atomic装饰之后,里面的结果就被回滚了,但是用try except包裹的atomic不会影响外层的transaction回滚

  • 相关阅读:
    李航博士:浅谈我对机器学习的理解
    数据挖掘过程中:数据预处理
    C++:构造函数和析构函数能否为虚函数
    PCA的数学原理
    奇异值分解(SVD) --- 几何意义
    3月机器学习在线班第六课笔记--信息熵与最大熵模型
    ML:交叉验证Cross-Validation
    LaTex的注释
    混合高斯模型
    NE2018届校招内推笔试——数据挖掘
  • 原文地址:https://www.cnblogs.com/Purk/p/5502652.html
Copyright © 2011-2022 走看看