首页 > 数据库 >pymysql.err.InterfaceError: (0, '')

pymysql.err.InterfaceError: (0, '')

时间:2022-12-01 13:44:07浏览次数:81  
标签:err InterfaceError url 0.0 self pymysql base 数据库

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

相关文章