首页 > 其他 > 详细

django 事务

时间:2019-09-06 14:09:22      阅读:68      评论:0      收藏:0      [点我收藏+]
from django.db import transaction

@transaction.atomic()
def page_trans(request):
""" 事务练习
发布微博 顺便发布一条评论
"""
user = WeiboUser.objects.get(pk=1)
# 发布微博
weibo = Weibo.objects.create(user=user,
content=‘事务练习‘)
# 发布评论
comment = Comment.objects.create(user=user,
content=‘微博评论‘,
weibo=weibo)

print(‘weibo:‘,weibo.pk,‘;comments:‘,comment.id)
return HttpResponse(‘ok‘);


def page_trans_with(request):
""" 事务练习
发布微博 顺便发布一条评论
"""
with transaction.atomic():
user = WeiboUser.objects.get(pk=1)
# 发布微博
weibo = Weibo.objects.create(user=user,
content=‘事务练习with‘)
# 发布评论
comment = Comment.objects.create(user=user,
content=‘微博评论with‘,
weibo=weibo)
print(‘weibo:‘, weibo.pk, ‘;comments:‘, comment.id)
return HttpResponse(‘ok‘)


def page_trans_hand(request):
""" 手动控制事务
发布微博 顺便发布一条评论
"""
try:
# 放弃自动提交
transaction.set_autocommit(False)

user = WeiboUser.objects.get(pk=1)
# 发布微博
weibo = Weibo.objects.create(user=user,
content=‘事务练习hand‘)
# 手动提交事务
transaction.commit()
# 发布评论
comment = Comment.objects.create(user=user,
content=‘微博评论hand‘,
weibo=weibo)
print(‘weibo:‘, weibo.pk, ‘;comments:‘, comment.id)
except:
# 不使用事务则手动删除数据
# weibo.delete()
# 回滚
transaction.rollback()

return HttpResponse(‘ok‘)

django 事务

原文:https://www.cnblogs.com/ericblog1992/p/11474139.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!