كيف تجعل Django يعمل مع برامج تشغيل MySQL غير مدعومة مثل Gevent-Mysql أو MySQL Driver؟

StackOverflow https://stackoverflow.com/questions/2636536

سؤال

أنا مهتم بتشغيل Django على إطار غير متزامن مثل Concurrence أو Gevent. كلا الأطرفين يأتي مع سائق MySQL الخاص به.

المشكلة هي أن Django يدعم رسميًا MySQLDB. ما الذي يجب علي فعله لجعل Django يعمل مع برامج تشغيل MySQL التي تأتي مع جيفنت أو موافقة؟

هل هناك دليل خطوة بخطوة في مكان ما يمكنني متابعته؟ هل هذا تعهد رئيسي؟

شكرًا.

هل كانت مفيدة؟

المحلول

ثلاثة هتافات لاقتراح @traviscline للذهاب مع pymysql. استند اقتراحه على هذا المنشور من موزيلا. كل ما يتطلبه تصحيح بسيط لملف إدارة

#!/usr/bin/env python
+try:
+    import pymysql
+    pymysql.install_as_MySQLdb()
+except ImportError:
+    pass 

تغيير الاستيراد في ملف الإعدادات الخاص بك ، و monkeypatch () لأن pymysql هو برنامج تشغيل Python نقي.

ذكر Travis أنه يختبر التوافق عن طريق تغيير الواردات وتشغيل الاختبارات unitts for pymysql و mysqldb و myconnpy.

لاحظ أنه يوجد بالفعل أمثلة على التفاصيل الدقيقة التي يجب الانتباه إليها - ولكن بشكل عام هذا حل أنيق يمكن صيانته. سأقوم بالتحديث عندما أحصل على هذا التشغيل في الإنتاج!

نصائح أخرى

لقد نجحت في الحصول على Pymysql للعمل مع Django القيام بما يلي:

  1. التعليق على كتلة المحاولة في بداية base.py ملف ، حيث يتم استيراد MySQLDB.
  2. أضف الأسطر الأربعة التالية إلى base.py

    try:
        import pymysql as Database
    except ImportError:
        pass
    
  3. كما ذكر في الرابط egbutter تم نشره ، انتقل إلى ملف base.py وإيجاده MySQLdb مع pymysql في الأجزاء ذات الصلة من الملف ، لا تهتم بمعنى تغيير رسائل الخطأ (يمكنك ، ولكن الأمر متروك لك).

  4. حفظ base.py ، وقم بتشغيل الأمر التالي من موقع APT لرؤية الخادم يبدأ.

    python manage.py runserver
    
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top