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回滚

  • 相关阅读:
    获取非行间样式
    获取非行间样式
    prompt 方法显示输入对话框
    comfirm 方法显示对话框
    移动端页面常见问题及解决方案
    原生js怎样获取后台端口数据
    canvas描绘渐变的矩形
    cookie 的增加,销毁,读取
    canvas 绘制图形
    数组的排序,去重复
  • 原文地址:https://www.cnblogs.com/Purk/p/5502652.html
Copyright © 2011-2022 走看看