Django数据库--事务及事务回滚
                        
                            时间:2021-07-01 10:21:17
                            帮助过:67人阅读
							                        
                     
                    
                    
                     django.db 
import transaction
# open a transaction
@transaction.atomic
def add_author_views(request):
    # 自动提交方式
    # Author.objects.create(name=u‘wangbaoqiang‘,age=33,email=‘wangbaoqiang@qqq.com‘)
    author_name = u
‘linghuchong‘
    author = Author(name=author_name,age=26,email=
‘linghuchong@qqq.com‘)
    author.save()
    # transaction now contains author.save()
    sid =
 transaction.savepoint()
    try:
        count = Count(name=author_name, article_amount=1
)
        count.save()
        # transaction now contains author.save() and count.save()
        transaction.savepoint_commit(sid)
        # open transaction still contains author.save() and count.save()
    except IntegrityError:
        transaction.savepoint_rollback(sid)
        # open transaction now contains only count.save()
        # 保存author操作回滚后,事务只剩下一个操作 
   transaction.clean_savepoints()  #清除保存点
注意:希望当遇到错误得到回滚的事务一定要放在try里面(如果放在try外面,虽然不会报错,但是是不会执行的)。如上面的例子,如果在给Count表执行插入数据发生错误,就会‘断点’回滚到Count表插入数据前,Author表插入的数据不变。
  
参考文章:https://www.cnblogs.com/thomson-fred/p/10198528.html
Django数据库--事务及事务回滚
标签:执行   https   nsa   实现   部分   行操作   功能   数据库数据   django数据库