Как избежать закрытия соединения с БД, если коннект осуществляется из другой библиотеки? У меня имеется основная программа - 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 добавлять функцию для коннекта не рационально, т.к. еще в других модулях будет происходить подключение к базе данных.

21 Авг 2019 в 06:58
249 +1
1
Ответы
1

Один из способов избежать закрытия соединения с базой данных в вашем случае - это сохранить соединение в переменной вместо возвращения курсора из функции db(). Вы можете изменить функцию db() следующим образом:

import mysql.connector
mydb = None
def db():
global mydb
if mydb is None or not mydb.is_connected():
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="",
database="vk-bot"
)
return mydb.cursor()

Теперь каждый раз, когда вы вызываете функцию db(), она будет использовать сохраненное соединение, если оно существует, иначе будет создавать новое соединение. Таким образом, соединение не будет закрываться после каждого вызова функции.

Не забудьте проверить наличие открытого соединения перед использованием курсора в вашем коде, чтобы избежать ошибок.

20 Апр 2024 в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир