"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo volver a conectar clientes MySQL en Python con MySQLdb y MySQL Connector/Python?

¿Cómo volver a conectar clientes MySQL en Python con MySQLdb y MySQL Connector/Python?

Publicado el 2024-11-15
Navegar:777

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

Reconectar clientes MySQL con MySQLdb

En el ámbito de la conectividad de bases de datos, mantener una conexión persistente es crucial para el acceso ininterrumpido a los datos. MySQLdb, una popular biblioteca de Python para interactuar con bases de datos MySQL, proporciona una forma de reconectar automáticamente a los clientes en caso de fallas de conexión.

Habilitar la reconexión automática en versiones anteriores

En versiones anteriores de MySQLdb, la funcionalidad de reconexión automática se podía activar a través de la función mysql_options(), como se muestra a continuación:

my_bool reconnect = 1
mysql_options(&mysql, MYSQL_OPT_RECONNECT, &reconnect)

Sin embargo, con la llegada de MySQL Connector/Python, la implementación subyacente ha cambiado y este enfoque ya no es aplicable.

Solución para MySQL Connector/Python

Para lograr la reconexión automática en MySQL Connector/Python, es necesario personalizar el comportamiento del objeto Cursor. El siguiente fragmento de código demuestra este enfoque:

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

Explicación

Este código define un método query() personalizado que encapsula el método Cursor.execute(). Si se produce un error de conexión (ya sea un AttributeError o MySQLdb.OperationalError), el método query() intentará volver a conectarse a la base de datos y luego volver a ejecutar la consulta.

Al implementar este mecanismo de reconexión automática dentro del Objeto cursor, puede asegurarse de que sus scripts de Python puedan continuar funcionando incluso si la conexión MySQL se pierde de forma intermitente. Este enfoque proporciona un medio más sólido y confiable para mantener la conectividad de la base de datos.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3