"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية إعادة توصيل عملاء MySQL في Python باستخدام MySQLdb وMySQL Connector/Python؟

كيفية إعادة توصيل عملاء MySQL في Python باستخدام MySQLdb وMySQL Connector/Python؟

تم النشر بتاريخ 2024-11-15
تصفح:709

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

إعادة توصيل عملاء MySQL مع MySQLdb

في مجال اتصال قاعدة البيانات، يعد الحفاظ على اتصال مستمر أمرًا بالغ الأهمية للوصول دون انقطاع إلى البيانات. توفر MySQLdb، وهي مكتبة Python شائعة للتواصل مع قواعد بيانات MySQL، طريقة لإعادة الاتصال بالعملاء تلقائيًا في حالة فشل الاتصال.

تمكين إعادة الاتصال التلقائي في الإصدارات السابقة

في الإصدارات السابقة من MySQLdb، كان من الممكن تنشيط وظيفة إعادة الاتصال التلقائي من خلال وظيفة mysql_options()، كما هو موضح أدناه:

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

ومع ذلك، مع ظهور MySQL Connector/Python، تغير التنفيذ الأساسي، ولم يعد هذا النهج قابلاً للتطبيق.

حل لـ MySQL Connector/Python

لتحقيق إعادة الاتصال التلقائي في MySQL Connector/Python، من الضروري تخصيص سلوك كائن المؤشر. يوضح مقتطف التعليمات البرمجية التالي هذا الأسلوب:

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

شرح

يحدد هذا الرمز طريقة الاستعلام () المخصصة التي تغلف طريقة Cursor.execute (). في حالة حدوث خطأ في الاتصال (إما AttributeError أو MySQLdb.OperationalError)، ستحاول طريقة query() إعادة الاتصال بقاعدة البيانات ثم إعادة تنفيذ الاستعلام.

من خلال تنفيذ آلية إعادة الاتصال التلقائية هذه داخل كائن المؤشر، يمكنك التأكد من أن نصوص Python الخاصة بك يمكن أن تستمر في العمل حتى في حالة فقدان اتصال MySQL بشكل متقطع. يوفر هذا الأسلوب وسيلة أكثر قوة وموثوقية للحفاظ على اتصال قاعدة البيانات.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3