Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk menyambung semula Pelanggan MySQL dalam Python dengan MySQLdb dan MySQL Connector/Python?

Bagaimana untuk menyambung semula Pelanggan MySQL dalam Python dengan MySQLdb dan MySQL Connector/Python?

Patricia Arquette
Patricia Arquetteasal
2024-11-13 14:23:02684semak imbas

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

Menyambung semula Pelanggan MySQL dengan MySQLdb

Dalam bidang ketersambungan pangkalan data, mengekalkan sambungan yang berterusan adalah penting untuk akses data tanpa gangguan. MySQLdb, perpustakaan Python yang popular untuk antara muka dengan pangkalan data MySQL, menyediakan cara untuk menyambung semula pelanggan secara automatik sekiranya berlaku kegagalan sambungan.

Mendayakan Auto-Sambung Semula dalam Versi Sebelumnya

Dalam versi MySQLdb yang lebih awal, fungsi sambung semula automatik boleh diaktifkan melalui fungsi mysql_options(), seperti yang ditunjukkan di bawah:

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

Walau bagaimanapun, dengan kemunculan MySQL Connector/Python, pelaksanaan asas telah berubah, dan pendekatan ini tidak lagi terpakai.

Solution for MySQL Connector/ Python

Untuk mencapai penyambungan semula automatik dalam MySQL Connector/Python, adalah perlu untuk menyesuaikan tingkah laku objek Kursor. Coretan kod berikut menunjukkan pendekatan ini:

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

Penjelasan

Kod ini mentakrifkan kaedah pertanyaan tersuai() yang membalut kaedah Cursor.execute(). Jika ralat sambungan berlaku (sama ada AttributeError atau MySQLdb.OperationalError), kaedah query() akan cuba menyambung semula ke pangkalan data dan kemudian melaksanakan semula pertanyaan.

Dengan melaksanakan mekanisme penyambungan semula automatik ini dalam Objek kursor, anda boleh memastikan bahawa skrip Python anda boleh terus beroperasi walaupun sambungan MySQL terputus seketika. Pendekatan ini menyediakan cara yang lebih teguh dan boleh dipercayai untuk mengekalkan ketersambungan pangkalan data.

Atas ialah kandungan terperinci Bagaimana untuk menyambung semula Pelanggan MySQL dalam Python dengan MySQLdb dan MySQL Connector/Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn