Как избежать закрытия соединения с БД, если коннект осуществляется из другой библиотеки? У меня имеется основная программа - 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
217 +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 Апр в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 829 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир