MySQLdb: Mendayakan Penyambungan Semula Pelanggan Automatik
Dalam MySQLdb, mewujudkan penyambungan automatik sambungan bukanlah tugas yang mudah berbanding sambungan MySQL PHP. Artikel ini menangani isu ini dan menyediakan penyelesaian yang berkesan.
Latar Belakang
Mengekalkan sambungan aktif dengan MySQL adalah penting dalam aplikasi web. Isu rangkaian, tamat masa atau permulaan semula pangkalan data boleh mengganggu sambungan ini, yang membawa kepada ralat. Untuk mengendalikan situasi sedemikian, pelanggan pangkalan data harus dilengkapi dengan keupayaan penyambungan semula automatik.
Penyelesaian MySQLdb
MySQLdb tidak menyediakan pilihan langsung untuk penyambungan semula automatik seperti MYSQL_OPT_RECONNECT MySQL . Walau bagaimanapun, penyelesaian melibatkan pembalut kaedah cursor.execute(), yang biasanya mencetuskan ralat sambungan apabila MySQL tidak dapat dicapai.
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
Kaedah ini mencipta Kelas DB dengan kaedah connect() untuk mewujudkan sambungan awal. Kaedah query() cuba untuk melaksanakan pertanyaan menggunakan kursor. Jika ralat sambungan berlaku (AttributeError atau MySQLdb.OperationalError), ia menyambung semula secara automatik dengan memanggil connect() dan kemudian mencuba semula pertanyaan dengan kursor baharu. Pendekatan ini memastikan bahawa aplikasi anda boleh mengendalikan isu sambungan sementara dan mengekalkan akses pangkalan data yang lancar.
Atas ialah kandungan terperinci Bagaimana untuk Mendayakan Penyambungan Semula Pelanggan Automatik dalam MySQLdb?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!