Ошибка при коннекте к БД при использовании фикстуры scope = session
При SQL запросе к бд через фикстуру session получаю ошибку
Lost connection to MySQL server during query (%s)" % (e,)) E pymysql.err.OperationalError: (2013, 'Lost connection to MySQL server during query ([WinError 10053] Программа на вашем хост-компьютере разорвала установленное подключение)')
Не понимаю почему ошибка, если поменять scope на function, то все отработает, кто знает подскажите пожалуйста. Основная идея при прогоне тестов создавать одно соединение и в нем делать запросы, чтобы не тратить время теста на коннекты.
фикстура
@pytest.fixture(scope='session')
def mysql_connect():
connect = MySql().connect()
yield connect[0]
MySql().connect_close(connect=connect[0], tunel=connect[1])
тест
def test_sdfds(mysql_connect):
sql = 'Select * from bd_user where ID = 1'
print(MySql().query_new(connect=mysql_connect, query=sql))
класс коннекта
class MySql(object):
def __init__(self):
self.config = Config().get()
def connect(self):
tunel = sshtunnel.SSHTunnelForwarder(
(self.config['host'], int(self.config['port'])),
ssh_username=self.config['host_user'],
ssh_private_key='../../../new_key',
remote_bind_address=(self.config['mysql_host'], int(self.config['mysql_port'])))
tunel.start()
connection = pymysql.connect(user=self.config['mysql_user'],
passwd=self.config['mysql_password'],
db=self.config['mysql_db'],
host='localhost',
port=tunel.local_bind_port, connect_timeout=1000)
return (connection, tunel)
def connect_close(self, connect, tunel):
connect.close()
tunel.stop()
def query_new(self, connect, query, params=None):
try:
with connect.cursor() as cursor:
sql = query
cursor.execute(query=sql, args=params)
result = cursor.fetchall()
id = cursor.lastrowid
connect.commit()
finally:
pass
return {"result": result, "insert_id": id}