pymysql.err.InterfaceError: (0, '')
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
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号