В сфере подключения к базе данных поддержание постоянного соединения имеет решающее значение для бесперебойного доступа к данным. MySQLdb, популярная библиотека Python для взаимодействия с базами данных MySQL, предоставляет возможность автоматического повторного подключения клиентов в случае сбоя соединения.
Включение автоматического повторного подключения в предыдущих версиях
В более ранних версиях MySQLdb функцию автоматического повторного подключения можно было активировать с помощью функции mysql_options(), как показано. ниже:
my_bool reconnect = 1 mysql_options(&mysql, MYSQL_OPT_RECONNECT, &reconnect)
Однако с появлением MySQL Connector/Python базовая реализация изменилась, и этот подход больше не применим.
Решение для MySQL Connector/Python
Для автоматического повторного подключения в MySQL Connector/Python необходимо настроить поведение объекта Cursor. Следующий фрагмент кода демонстрирует этот подход:
import MySQLdb class DB: conn = None def connect(self): self.conn = MySQLdb.connect() def query(self, sql): try: cursor = self.conn.cursor() cursor.execute(sql) except (AttributeError, MySQLdb.OperationalError): self.connect() cursor = self.conn.cursor() cursor.execute(sql) return cursor db = DB() sql = "SELECT * FROM foo" cur = db.query(sql) # wait a long time for the Mysql connection to timeout cur = db.query(sql) # still works
Объяснение
Этот код определяет собственный метод query(), который является оболочкой метода Cursor.execute(). Если возникает ошибка соединения (либо AttributeError, либо MySQLdb.OperationalError), метод query() попытается повторно подключиться к базе данных, а затем повторно выполнить запрос.
Реализуя этот механизм автоматического повторного подключения в Cursor, вы можете гарантировать, что ваши сценарии Python смогут продолжать работать, даже если соединение с MySQL периодически теряется. Этот подход обеспечивает более надежные средства поддержания связи с базой данных.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3