An error occurred in the current transaction. You can‘t execute queries until the end of the ‘atomic

2023-11-19

问题

如图所示,错误返回结果是An error occurred in the current transaction. You can't execute queries until the end of the 'atomic block

 (这个在django中,用swagger进行调试,自己捕获异常的结果)

分析

字面意思

就是django中从开启事务后,到事务with结束(包含异常)后,执行了数据查询语句。

我代码的基本结构(犯了最底下的两个要点)

class InfoStore(APIView):

    @swagger_auto_schema(******)
    def post(self, request):
        receive_data = request.data

        with transaction.atomic():   # 1 在transaction中去try except自己捕获异常
            # 创建事务保存点
            save_id = transaction.savepoint()
            try:
                if(InfoTest.objects.filter(**)):  # 2 在transaction中执行查询语句
                    # process information
                    info_test = InfoTest()
                    info_test .save()

            except Exception as e:
                transaction.savepoint_rollback(save_id)
                return response_as_json(data={
                        'code': '500',
                        'msg': '服务基本信息数据异常存储',
                        'data': e.__str__()
                    },
                    status=status.HTTP_500_INTERNAL_SERVER_ERROR
                )

            transaction.savepoint_commit(save_id)

            return response_as_json(data={'code': '200', 'msg': 'Success', 'data': 'None'}, status=status.HTTP_200_OK)

 

解决

这里参照官方代码的部分解释:(PS:这里是翻译软件翻译出来的,可能细节不够准确)

主要要点:

1不推荐在with transaction.automic中去捕获异常

2在with transaction.automic中执行查询语句会导致TransactionManagementError

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

An error occurred in the current transaction. You can‘t execute queries until the end of the ‘atomic 的相关文章

随机推荐

  • OpenAI最新发布通用人工智能路线图!AGI比想象中来得更快!

    点击下方卡片 关注 CVer 公众号 AI CV重磅干货 第一时间送达 点击进入 gt 计算机视觉 微信技术交流群 转载自 机器之心 编辑 泽南 小舟 通用人工智能的出现可能只是技术发展历程中的一个小节点 因为 AGI 或许可以加速自身的进
  • 点云/网格模型的体积计算

    点云体积计算 有时用激光扫描设备扫描零件或者用无人机进行测量后会想知道它们的体积 比如下面的土堆 如果扫描得到的数据是一系列三维点云 那么体积就比较难求 因为如何定义物体的边界比较困难 一种方法是提取三维点云的凸壳 包络体 然后再进行计算
  • 第五章 数据清洗

    5 1数据去重 5 1 1完全去重 点击 获取字段 配置csv文件输入的属性 Name Gender City 配置唯一行属性 选择要去重的属性 Name Gender City 运行结果 完全去重成功 5 1 2不完全去重 将文本分隔符替
  • 支付宝短视频平台创作分成激励项目

    没想到支付宝也开通了中视频计划 这波羊毛算是蒿定了 最近啊 马爸爸火速上线了支付宝创作分成计划 明显就是抄的抖音中视频计划 目前还在内测阶段 补贴的力度非常大 错过的话就只能拍大腿了 看到短视频这么的火爆 巨头大佬们都想分一杯羹啊 阿里也不
  • Linux下MySQL启动、停止、重启的几种方式

    一 启动 1 使用service 启动 service mysqld start 2 使用 mysqld 脚本启动 etc inint d mysqld start 3 使用 safe mysqld 启动 safe mysqld 二 停止
  • 互联网产品上线流程,及面试题分类

    一 基础情况 问题1 自我介绍 3mins 与自我介绍 1min 问题2 为什么你要来这个行业 问题3 为什么你要来这个岗位 问题4 为什么你能胜任这份工作 问题5 为什么你要离职 问题6 过往经历STAR故事描述 问题7 你的职业规划是什
  • php mes代码,完整MES代码(含客户端和server端)

    实例简介 完整的代码 带数据库文件 包含客户端 服务端 实例截图 核心代码 MES 源代码 MES 源代码 MES 源代码 dll AjaxControlToolkit dll AspNetServer dll AxInterop CELL
  • el-form 校验单个字段

    单个校验 核心为 validateField 而非validate
  • 关于编译器生成默认构造函数的理解

    构造函数 构造函数是创建类类型对象时 由编译器自动调用 用来初始化对象的函数 它保证每个数据成员都有一个合适的初始值 并且在对象的生命周期内只调用一次 函数名与类名相同 无返回值 构造函数可以重载 什么是默认构造函数 无参的构造函数 全缺省
  • JAVA中的while do-while循环以及for循环的深刻理解 入门 小白必看

    循环 循环 循环 循环的作用 提出问题为什么需要循环 解决问题循环的出现 while 前序 循环 while循环的语法与流程以及细节 do while 后序循环 do while循环的语法和流程 while和do while 之间的区别 f
  • 人工智能顶会顶刊以及SCI,IF,核心,分区

    人工智能顶会顶刊以及SCI IF 核心 分区 标签 常识 刚上研究生的时候 老师总会让大家看论文 并且还要求要看好文章 要看顶会或者顶刊上面的文章 但是刚开始就不知道什么是顶会或者顶刊 所以这里整理了一下在人工智能方面的顶刊或者顶会 比如c
  • HacksudoAliens

    HacksudoAliens arp scan interface eth0 192 168 1 0 24 nmap sC sV p sT 192 168 1 251 sS sT sA sW sM TCP SYN Connect ACK W
  • Java自动生成bean、dao、service、impl、controller(JPA初版)

    关自动生成代码我是这么想的 初步 目录 一 拿到所有表名 列名 列类型数据 C3P0连接数据库并获取所需数据 所需数据对象 测试拿到的数据 结果 二 用FreeMarker模板生成对应JPA架构Java文件 编写模板 bean ftl be
  • C语言实验——打印金字塔

    Problem Description 输入n值 打印下列形状的金字塔 其中n代表金字塔的层数 Input 输入只有一个正整数n Output 打印金字塔图形 其中每个数字之间有一个空格 Sample Input 3 Sample Outp
  • 美创科技发布“韧性”数据安全防护体系框架

    4月13日 美创科技数据安全产品架构升级发布会顺利举办 会上 美创重磅发布 韧性 数据安全防护体系框架 全新数据安全框架 以 资产 为中心 由内而外 以 看见 基石 旨在通过构建 弹性和韧性 可见性 适应性进化 的数据安全防护能力 帮助用户
  • Python打印输出数组中全部元素的方法

    学习Python的人都知道数组是最常用的的数据类型 为了保证程序的正确性 需要调试程序 因此 需要在程序中控制台中打印数组的全部元素 如果数组的容量较小 例如 只含有10个元素 采用print命令或print函数可以答应出数组中的每个元素
  • 记一次挖矿病毒应急处置全过程&挖矿处置基本操作

    记一次挖矿病毒应急处置全过程 挖矿处置基本操作 一 处置过程 1 查看第一位的pid号 32535 2 进入 tmp X11 unix 目录 其中 11 文件中写的是32535 01 文件中写的是守护进程pid号10092 目录里的文件不一
  • 【Vue】Vue基础自用笔记&Day03_①Vue生命周期②Vue网络请求③Vue动画

    Vue基础 Day03 1 Vue生命周期 this nextTick 方法 2 Vue网络请求 vue resource Axios 3 Vue动画 使用CSS创建动画 或者使用第三方动画库 animate css 使用JS创建动画 使用
  • var 的变量提升

    var 的变量提升 var 定义的变量的定义时存在变量提升现象 console log a undefined var a 10 console log a 10 原理 js 引擎在渲染代码时 将变量声明部分和函数声明部分提升到函数的顶部
  • An error occurred in the current transaction. You can‘t execute queries until the end of the ‘atomic

    问题 如图所示 错误返回结果是An error occurred in the current transaction You can t execute queries until the end of the atomic block