كيف تجعل Django يعمل مع برامج تشغيل MySQL غير مدعومة مثل Gevent-Mysql أو MySQL Driver؟
-
26-09-2019 - |
سؤال
أنا مهتم بتشغيل 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 القيام بما يلي:
- التعليق على كتلة المحاولة في بداية base.py ملف ، حيث يتم استيراد MySQLDB.
أضف الأسطر الأربعة التالية إلى base.py
try: import pymysql as Database except ImportError: pass
كما ذكر في الرابط egbutter تم نشره ، انتقل إلى ملف base.py وإيجاده
MySQLdb
معpymysql
في الأجزاء ذات الصلة من الملف ، لا تهتم بمعنى تغيير رسائل الخطأ (يمكنك ، ولكن الأمر متروك لك).حفظ base.py ، وقم بتشغيل الأمر التالي من موقع APT لرؤية الخادم يبدأ.
python manage.py runserver