【Python+Django+Pytest】数据库异常pymysql.err.InterfaceError: (0, '') 解决方案
问题背景:
接口自动化测试平台,在执行测试案例之外,还需要做以下五件事情(或步骤):
1.查询用户在数据准备中预置的测试套件层数据初始化相关sql (setUp_class方法中)
2.查询用户在数据准备中预置的测试案例层数据初始化相关sql (setUp_method方法中)
3.查询用户在数据准备中预置的测试套件层数据清理相关sql (tearDown_class方法中)
4.查询用户在数据准备中预置的测试案例层数据清理相关sql (tearDown_method方法中)
5.全部案例执行结束之后将结果写入t_execution及t_result表 (tearDown_class方法中)
代码修改:
原来的代码是在每个方法中执行查询操作,然后在tearDown_class方法中执行 5.全部案例执行结束之后将结果写入t_execution及t_result表
考虑到性能问题
优化后的代码为:
将1-4中的步骤提前,全部查询出来数据之后,再分别执行setUp_class、setUp_method、tearDown_class、tearDown_method方法
事情5仍然放在tearDown_class中
问题出现:
修改完代码之后,在开发环境验证了一个案例相对比较少,全部执行时间只有10+s的模块,没有出现问题,准备按时上线
结果上线之后,跑了一个案例比较多,全部执行时间有4m多的模块,结果报:pymysql.err.InterfaceError: (0, '')
问题解决:
修改第5步中 执行更新 t_execution及t_result不关闭连接,最后在finally中关闭连接 -->未起作用
将修改之前的代码重新上传至服务器,验证没有问题 -->自己修改的代码有问题
突然意识到将所有查询数据准备sql的代码提前之后,再到将最后的结果更新 到t_execution及t_result之前,数据库的连接有很长一段时间的空闲时间,于是尝试在更新结果之前重新建立连接,修改完代码,并部署到服务器之后 -->验证没有问题
以上为我自己的解决方法,不知道说清楚没有,希望看到文章的你提出宝贵意见
附:别处看到的更专业也更有可能有用的解决方法跟思路
【Python+Django+Pytest】数据库异常pymysql.err.InterfaceError: (0, '') 解决方案的更多相关文章
- MySQL数据库报错pymysql.err.InterfaceError: (0, '')
今天入库的时候出现了报错pymysql.err.InterfaceError: (0, ''),经过排查,发现是由于把连接数据库的代码放到了插入函数的外部,导致多线程运行出错 def write_in ...
- pycharm pymysql连接mysql 报错 pymysql.err.InterfaceError: (0, '')
pycharm pymysql连接mysql 执行MySQL操作遇到以下报错信息: conn.query(q) File "C:\Software\Python37\lib\site-p ...
- pymysql.err.InterfaceError: (0, '')解决办法
导致这个错误的原因是通过pymysql连接MySQL,没有关闭连接的操作,所以短时间内不会出问题,长时间保持这个连接会出现连接混乱.虽然看着自己的代码没错,还是会报 pymysql.err.Inter ...
- Python连接MySQL数据库之pymysql模块使用
安装PyMySQL pip install pymysql PyMySQL介绍 PyMySQL是在python3.x版本中用于连接MySQL服务器的一个库,2中则使用mysqldb. Django中也 ...
- Mysql(九):Python连接MySQL数据库之pymysql模块使用
Python3连接MySQL 本文介绍Python3连接MySQL的第三方库--PyMySQL的基本使用. PyMySQL介绍 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服 ...
- Mysql失败,异常pymysql.err.InternalError: (1366, "Incorrect string value: '\\xF0\\x9D\\x90\\xBF;......
问题描述: 插入Mysql时失败了,python代码报如下异常: pymysql.err.InternalError: (1366, "Incorrect string value: '\\ ...
- 关于python+django操作数据库中的表
数据库中的表示这样设计的 class C(models.Model): name = models.CharField(max_length=32) class B(models.Model): na ...
- Python和MySQL数据库交互PyMySQL
Python数据库操作 对于关系型数据库的访问,Python社区已经指定了一个标准,称为Python Database API SepcificationV2.0.MySQL.Qracle等特定数据库 ...
- python django 与数据库的交互
下载没有任何问题的mysqdb http://www.codegood.com/archives/4 1创建一个新的app. python manage.py startapp books 2 激活a ...
随机推荐
- 【Linux】【Basis】Grub
GRUB(Boot Loader): 1. grub: GRand Unified Bootloader grub 0.x: grub legacy grub 1.x: grub2 2. gr ...
- 5.Vue.js-模板语法
Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据. Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统 ...
- Redis学习推荐资料合集
目录 一.官方 二.书籍 三.推荐博客 一.官方 redis官网 redis中文网 redis中文命令网 redis模块 redis-github源码 redis报告 二.书籍 <Redis开发 ...
- [BUUCTF]REVERSE——刮开有奖
刮开有奖 附件 步骤: 例行检查,无壳,32位程序 32位ida载入,shift+f12检索程序里的字符串,看到了一个base64加密的特征字符串,猜想这题用到了base64加密 从main函数开始看 ...
- LuoguP1619 解一元二次方程的烦恼 题解
Content 模拟一个系统,给出一个数 \(n\),让你判断是否是素数,如果是合数的话就要质因数分解. 需要注意的几点: 数字超过 \(4\times 10^7\),输出溢出提示. 数字小于 \(2 ...
- AT4811 [ABC160D] Line++ 题解
Content 给定一个 \(n\) 个点.\(n\) 条边的无向图.对于所有的 \(1\leqslant i<n\),在点 \(i,i+1\) 之间连一条无向边.另外在给定两个点 \(x,y\ ...
- CF420A Start Up 题解
Content 给定一个长度为 \(n\) 的字符串,求这个字符串整个反转过来后是否和原字符串一样. 数据范围:\(1\leqslant n\leqslant 10^5\). Solution 众所周 ...
- CF1440A Buy the String 题解
Content 有 \(t\) 组询问,每组询问给出一个长度为 \(n\) 的 \(0/1\) 串,你可以花 \(h\) 的代价把 \(0\) 修改成 \(1\) 或者把 \(1\) 修改成 \(0\ ...
- TCP 两次握手为什么无法阻止历史连接?
摘要:在两次握手的情况下,「被动发起方」没有中间状态给「主动发起方」来阻止历史连接,导致「被动发起方」可能建立一个历史连接,造成资源浪费. 本文分享自华为云社区<TCP 两次握手为什么无法阻止历 ...
- linux(centos)系统安装activemq
activemq是消息中间件,可以用来 解耦.消峰.异步 需要先安装jdk环境:https://www.cnblogs.com/pxblog/p/10512886.html 1.下载文件 (也可以直接 ...