zoukankan      html  css  js  c++  java
  • django 事务

    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')
  • 相关阅读:
    【装机知识】内存条知识总结
    【装机知识】主板知识整理
    【装机知识】CPU知识整理
    SHELL 学历笔记
    tmux 会话恢复(no sessions)
    数据库客户端神器(mycli/pgcli/iredis)
    golang编写二叉树
    编译安装带lua 的 vim 编辑器
    linux 下vim 开发环境配置(通用所有编程语言)
    mac 下安装mysql
  • 原文地址:https://www.cnblogs.com/ericblog1992/p/11474139.html
Copyright © 2011-2022 走看看