«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как повторно подключить клиенты MySQL в Python с помощью MySQLdb и MySQL Connector/Python?

Как повторно подключить клиенты MySQL в Python с помощью MySQLdb и MySQL Connector/Python?

Опубликовано 15 ноября 2024 г.
Просматривать:284

How to Reconnect MySQL Clients in Python with MySQLdb and MySQL Connector/Python?

Повторное подключение клиентов MySQL к MySQLdb

В сфере подключения к базе данных поддержание постоянного соединения имеет решающее значение для бесперебойного доступа к данным. 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