pymysql.err.InterfaceError: (0, '')
背景
自动化代码需要坚固开发服和测试服,但是又有一些固定数据(或者说是死数据),无法同时满足开发服和测试服,每次if...else...
判断url很烦,如果涉及到修改那就更麻烦了需要找到所有的if...else...
。
解决办法
把环境封装成一个类,类中只写一次if...else...
,如果涉及到开发服和测试服不同的均放到类中。但是当我把数据库链接也放到类中后,
class Env(object):
def __init__(self, base_url):
self.base_url = base_url
if 'test' in self.base_url:
# 数据库对象
self.db_ = pymysql.connect(host='0.0.0.0', user='root', password='123', database='test',
port=3306)
logger.info('当前数据库为测试服')
elif 'dev' in self.base_url:
self.db_ = pymysql.connect(host='0.0.0.0', user='root',
password='123', database='dev', port=7306)
logger.info('当前数据库为开发服')
else:
logger.error('请确认测试服务器')
当我执行用例的时候发现了异常:执行sql语句的时候提示:
pymysql.err.InterfaceError: (0, '')
通过查询,意思多个py文件中数据库只链接了一次,也可以说是多个线程使用了同一个数据库链接。原文:https://stackoverflow.com/questions/55365543/pymysql-err-interfaceerror-0-error-when-doing-a-lot-of-pushes-to-sql-tabl
修改后代码如下:
class Env(object):
def __init__(self, base_url):
self.base_url = base_url
if 'test' in self.base_url:
logger.info('当前数据库为测试服')
elif 'dev' in self.base_url:
logger.info('当前数据库为开发服')
else:
logger.error('请确认测试服务器')
@property
def mysql_info(self):
if 'test' in self.base_url:
# 数据库对象
self.db_ = pymysql.connect(host='0.0.0.0', user='root', password='123', database='test',
port=3306)
elif 'dev' in self.base_url:
self.db_ = pymysql.connect(host='0.0.0.0', user='root',
password='123', database='dev', port=7306)
return self.db_
其他py文件调用:
Env(base_url).mysql_info
标签:err,InterfaceError,url,0.0,self,pymysql,base,数据库
From: https://www.cnblogs.com/tarzen213/p/16941154.html