Почему-то тг бот с AIOGRAM на утро начинает давать ошибку после ночного простоя. Подключение к БД не пересоздается, видимо. Как лучше реализовать это в моем случае? Использую драйвер MYSQL ODBC и создаю экземпляр класса с подключением к БД при запуске бота. Код типичной ошибки при первой попытке воспользоваться ботом на утро:
File "/root/tg_bot/bot.py", line 118, in process_callback
config = db.select("SELECT * FROM `config`")
File "/root/tg_bot/db.py", line 23, in select
self.cursor.execute(query, args)
pyodbc.OperationalError: ('08S01', '[08S01] [MySQL][ODBC 8.0(w) Driver][mysqld-8.0.31]Lost connection to MySQL server during query (2013) (SQLExecDirectW)')
Класс вот так реализован:
class Db:
def __init__(self):
self.conn = mysql.connector.connect(host=DB_HOST, database=DB_NAME, user=DB_USER, password=DB_PASSWORD)
if self.conn.is_connected():
self.cursor = self.conn.cursor(buffered=True)
def selectRow(self, query, args = None):
self.cursor = self.conn.cursor(buffered=True)
self.cursor.execute(query, args)
return self.cursor
def insertRow(self, query, args = None):
self.conn = mysql.connector.connect(host=DB_HOST, database=DB_NAME, user=DB_USER, password=DB_PASSWORD)
if self.conn.is_connected():
self.cursor = self.conn.cursor()
self.cursor.execute(query, args)
self.conn.commit()
def updateRow(self, query, args = None):
self.conn = mysql.connector.connect(host=DB_HOST, database=DB_NAME, user=DB_USER, password=DB_PASSWORD)
if self.conn.is_connected():
self.cursor = self.conn.cursor()
self.cursor.execute(query, args)
self.conn.commit()
def reload(self):
self.cursor = self.conn.cursor(buffered=True)
Раньше пользовался библиотекой mysql_connector без драйверов и тд. Всё хорошо работало.