"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como reconectar clientes MySQL em Python com MySQLdb e MySQL Connector/Python?

Como reconectar clientes MySQL em Python com MySQLdb e MySQL Connector/Python?

Publicado em 15/11/2024
Navegar:802

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

Reconectando clientes MySQL com MySQLdb

No domínio da conectividade de banco de dados, manter uma conexão persistente é crucial para acesso ininterrupto aos dados. MySQLdb, uma biblioteca Python popular para interface com bancos de dados MySQL, fornece uma maneira de reconectar clientes automaticamente em caso de falhas de conexão.

Ativando a reconexão automática em versões anteriores

Em versões anteriores do MySQLdb, a funcionalidade de reconexão automática poderia ser ativada através da função mysql_options(), conforme mostrado abaixo:

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

No entanto, com o advento do MySQL Connector/Python, a implementação subjacente mudou e esta abordagem não é mais aplicável.

Solução para MySQL Connector/Python

Para obter a reconexão automática no MySQL Connector/Python, é necessário customizar o comportamento do objeto Cursor. O trecho de código a seguir demonstra essa abordagem:

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

Explicação

Este código define um método query() personalizado que envolve o método Cursor.execute(). Se ocorrer um erro de conexão (um AttributeError ou MySQLdb.OperationalError), o método query() tentará se reconectar ao banco de dados e, em seguida, executar novamente a consulta.

Ao implementar este mecanismo de reconexão automática dentro do Objeto Cursor, você pode garantir que seus scripts Python possam continuar a operar mesmo se a conexão MySQL for perdida intermitentemente. Essa abordagem fornece um meio mais robusto e confiável de manter a conectividade do banco de dados.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3