Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Mendayakan Penyambungan Semula Automatik dalam MySQLdb untuk Interaksi Pangkalan Data Berterusan?

Bagaimana untuk Mendayakan Penyambungan Semula Automatik dalam MySQLdb untuk Interaksi Pangkalan Data Berterusan?

Linda Hamilton
Linda Hamiltonasal
2024-11-15 14:38:02832semak imbas

How to Enable Automatic Reconnection in MySQLdb for Persistent Database Interaction?

Mendayakan Penyambungan Automatik Pelanggan MySQL dengan MySQLdb

Dalam Python, MySQLdb menawarkan cara yang mudah untuk menyambung ke pangkalan data MySQL. Walau bagaimanapun, mengekalkan sambungan berterusan boleh menghadapi masalah, seperti sambungan terputus.

Soalan: Bagaimanakah kita boleh mendayakan penyambungan semula automatik dalam MySQLdb?

Penyelesaian: Walaupun wujud kaedah PHP untuk mengendalikan senario ini, MySQLdb tidak mempunyai pendekatan langsung yang serupa. Walau bagaimanapun, menggunakan fungsi tersuai boleh memberikan penyelesaian.

Coretan kod berikut menunjukkan如何mencapai penyambungan semula automatik:

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)
# Simulate a connection timeout with a delay
time.sleep(600)
cur = db.query(sql)
# Connection still active

Dalam contoh ini, kaedah pertanyaan cuba melaksanakan pertanyaan. Jika ralat sambungan berlaku, ia menyambung semula dan mencuba semula pertanyaan. Mekanisme ini memastikan interaksi pangkalan data berterusan walaupun sambungan terputus seketika.

Atas ialah kandungan terperinci Bagaimana untuk Mendayakan Penyambungan Semula Automatik dalam MySQLdb untuk Interaksi Pangkalan Data Berterusan?. 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