Comment faire fonctionner Django avec les pilotes MySQL non pris en charge tels que gevent-mysql ou le pilote de MySQL de convergence?

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

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.

Était-ce utile?

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:

  1. Comment le try-except bloc au début du base.py fichier où MySQLdb est importé.
  2. Ajoutez les quatre lignes à base.py

    suivantes
    try:
        import pymysql as Database
    except ImportError:
        pass
    
  3. Comme mentionné dans le lien que egbutter affiché, allez dans le fichier base.py et trouver-remplacer MySQLdb avec pymysql 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).

  4. 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
    
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top