From cddc37ff7e2e3257fb6d8024aa2a0cc3ae476468 Mon Sep 17 00:00:00 2001 From: Benny Date: Thu, 20 Apr 2023 18:57:29 +0200 Subject: [PATCH] enhance db connection --- requirements.txt | 2 +- ytdlbot/database.py | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/requirements.txt b/requirements.txt index 1a6e6a85..a622088b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,7 +8,7 @@ PyMySQL==1.0.3 celery==5.2.7 filetype==1.2.0 flower==1.2.0 -psutil==5.9.4 +psutil==5.9.5 influxdb==5.3.1 beautifulsoup4==4.12.2 fakeredis==2.10.3 diff --git a/ytdlbot/database.py b/ytdlbot/database.py index 3e2fb8bd..f5268984 100644 --- a/ytdlbot/database.py +++ b/ytdlbot/database.py @@ -41,6 +41,9 @@ def commit(self): def close(self): pass + def ping(self, reconnect): + pass + class Cursor: def __init__(self): @@ -50,7 +53,8 @@ def __init__(self): def execute(self, *args, **kwargs): sql = self.sub(args[0]) new_args = (sql,) + args[1:] - return self.cur.execute(*new_args, **kwargs) + with contextlib.suppress(sqlite3.OperationalError): + return self.cur.execute(*new_args, **kwargs) def fetchall(self): return self.cur.fetchall() @@ -245,13 +249,14 @@ class MySQL: """ def __init__(self): - if MYSQL_HOST: + try: self.con = pymysql.connect( host=MYSQL_HOST, user=MYSQL_USER, passwd=MYSQL_PASS, db="ytdl", charset="utf8mb4" ) - else: + except pymysql.err.OperationalError: self.con = FakeMySQL() + self.con.ping(reconnect=True) self.cur = self.con.cursor() self.init_db() super().__init__()