Comment faire fonctionner Django avec les pilotes MySQL non pris en charge tels que gevent-mysql ou le pilote de MySQL de convergence?
-
26-09-2019 - |
Question
Je suis intéressé à courir Django sur un cadre async comme gevent ou adoption. Les deux cadres sont livrés avec son propre pilote MySQL async.
Le problème est Django ne supporte officiellement MySQLdb. Que dois-je faire pour faire fonctionner Django avec les pilotes de MySQL qui viennent avec gevent ou convergence?
Y at-il un guide étape par étape quelque part que je peux suivre? Est-ce une entreprise majeure?
Merci.
La solution
Vive la suggestion de @ traviscline pour aller avec pymysql . sa suggestion est fondée sur ce poste de mozilla . tout ce qu'il faut est un patch simple, à votre fichier manage.py
#!/usr/bin/env python
+try:
+ import pymysql
+ pymysql.install_as_MySQLdb()
+except ImportError:
+ pass
changer l'importation dans votre fichier de paramètres et monkey-patch () depuis pymysql est un pilote pur python.
TRAVIS mentionné qu'il teste la compatibilité en changeant les importations et l'exécution des tests unitaires pour pymysql, mysqldb et myconnpy.
note qu'il existe déjà des exemples de détails plus fins à surveiller - mais dans l'ensemble c'est un solution élégante, maintenable. Je mettrai à jour quand je reçois cette course dans la production!
Autres conseils
J'ai réussi à obtenir pymysql de travailler avec Django procédant comme suit:
- Comment le try-except bloc au début du base.py fichier où MySQLdb est importé.
-
Ajoutez les quatre lignes à base.py
suivantestry: import pymysql as Database except ImportError: pass
-
Comme mentionné dans le lien que egbutter affiché, allez dans le fichier base.py et trouver-remplacer
MySQLdb
avecpymysql
au niveau des parties pertinentes du dossier, à savoir ne prend pas la peine de changer les messages d'erreur (vous pouvez, mais c'est à vous). -
Enregistrer base.py et exécutez la commande suivante à partir de l'emplacement apt pour voir le démarrage du serveur.
python manage.py runserver