@Whey

Как избежать закрытия соединения с БД, если коннект осуществляется из другой библиотеки?

У меня имеется основная программа - main.py, которая должна подключаться к базе данных, и затем выполняться действия.

Вот кусок кода из main.py:
from ConnectToDB import db
    def authorization(self):
        self.mycursors = db()
        self.mycursors.execute("SELECT * FROM `users` WHERE `VK_ID` LIKE '111'")

А также у меня есть библиотека в которой происходит подключение:
import mysql.connector

def db():
    mydb = mysql.connector.connect(
                        host="localhost",
                        user="root",
                        passwd="",
                        database="vk-bot"
                    )
    cursor = mydb.cursor()
    return cursor

Естественно после вызова библиотеки - происходит закрытие соединения, и я не могу выполнить никаких действий. Как можно избежать такого закрытия, и что можно предпринять? В main.py добавлять функцию для коннекта не рационально, т.к. еще в других модулях будет происходить подключение к базе данных.
  • Вопрос задан
  • 92 просмотра
Решения вопроса 1
В самом mysql можно в конфиге прописать wait_timeout большой, но это не совсем выход...
В том же php есть функция mysqli_ping или что-то такое, у меня тоже скрипт висел месяцами и изредка поймав запрос начинал его обрабатывать работая с бд, естественно коннект отваливался какой бы таймаут не указал, а сильно большие таймауты у сервера ведут к подвисшим соединениям незакрытым, поэтому, в своей программе продумайте такой момент в прослойке к БД, чтобы запоминало время последнего обращения к БД и если оно превышает например 2 минуты, то проверять коннект и если его нет, то переконектить.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы