Как избежать закрытия соединения с БД, если коннект осуществляется из другой библиотеки? У меня имеется основная программа - 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 добавлять функцию для коннекта не рационально, т.к. еще в других модулях будет происходить подключение к базе данных.
Один из способов избежать закрытия соединения с базой данных в вашем случае - это сохранить соединение в переменной вместо возвращения курсора из функции 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(), она будет использовать сохраненное соединение, если оно существует, иначе будет создавать новое соединение. Таким образом, соединение не будет закрываться после каждого вызова функции.
Не забудьте проверить наличие открытого соединения перед использованием курсора в вашем коде, чтобы избежать ошибок.
Один из способов избежать закрытия соединения с базой данных в вашем случае - это сохранить соединение в переменной вместо возвращения курсора из функции db(). Вы можете изменить функцию db() следующим образом:
import mysql.connectormydb = 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(), она будет использовать сохраненное соединение, если оно существует, иначе будет создавать новое соединение. Таким образом, соединение не будет закрываться после каждого вызова функции.
Не забудьте проверить наличие открытого соединения перед использованием курсора в вашем коде, чтобы избежать ошибок.