web-dev-qa-db-fra.com

Qu'est-ce que PyMySQL et en quoi diffère-t-il de MySQLdb? Peut-il affecter Django déploiement?

Je viens de résoudre quelques problèmes dans mon Django 1.3 app en utilisant PyMySQL au lieu de MySQLdb. J'ai suivi ce tutoriel sur la façon de faire le changement: http: // web-eng-help .blogspot.com/2010/09/install-mysql-5-for-python-26-and.html

Maintenant, je veux savoir ce qu'est PyMySQL et en quoi il diffère de MySQLdb.

Je l'utilise sur localhost et le téléchargerai ensuite sur un hébergement.

Est-ce bien d'utiliser PyMySQL sur localhost et sur l'hébergement de tout ce qu'ils fournissent? Puisque j'ai changé "MySQLdb" dans base.py et introspection.py en "PyMySQL", dois-je le télécharger sur le serveur après avoir changé ces fichiers? Ou comme ce sont les fichiers de Django, puisque Django y sera déjà téléchargé, cela n'a-t-il pas beaucoup d'importance?

40
Hafiz

PyMySQL et MySQLdb sont tous deux des connecteurs de base de données pour Python, des bibliothèques pour permettre aux programmes Python de parler à un serveur MySQL.

Vous ne devriez normalement jamais télécharger de fichiers core Django lors du déploiement d'une application. Si Django fonctionne correctement sur votre serveur de déploiement, vous n'avez absolument pas besoin de changer quoi que ce soit). Le pilote DB est même une étape ou deux en dessous de l'ORM, et certainement aucun du code que vous avez écrit ne dépend de celui qui est utilisé.

16
Cole

PyMySQL et MySQLdb offrent les mêmes fonctionnalités - ce sont tous deux des connecteurs de base de données. La différence réside dans l'implémentation où MySQLdb est une extension C et PyMySQL est du pur Python.

Il y a plusieurs raisons d'essayer PyMySQL:

  • il pourrait être plus facile de fonctionner sur certains systèmes
  • cela fonctionne avec PyPy
  • il peut être "écologisé" et fonctionne avec gevent

La bonne façon de l'utiliser avec Django est de l'importer et de lui dire de se faire passer pour MySQLdb dans votre fichier de niveau supérieur, habituellement manage.py. Mettez le code suivant tout en haut de votre gestion .py (ou tout autre fichier que vous appelez au démarrage de votre serveur):

try:
    import pymysql
    pymysql.install_as_MySQLdb()
except ImportError:
    pass
59
Daniel Eriksson

Votre premier point:

Selon wiki pymysql page:

MySQLdb, est un module d'extension C qui a la réputation d'être difficile à compiler, surtout si vous êtes sur un Mac. De plus, les utilisateurs finaux doivent attendre que de nouveaux binaires soient compilés pour chaque nouvelle version de Python, et MySQLdb ne fonctionnera jamais sur Jython, IronPython ou PyPy (sans quelque chose comme cpyext ou IronClad). Nous maintenons également une compatibilité à 100% entre Python 2 et Python 3, donc toutes les avancées effectuées sur le tronc 2.x seront immédiatement disponibles sur Python 3.

Votre deuxième point:

Si Django fonctionne bien sur votre hôte local, cela devrait aller sur votre développement.

10
Tauquir

Selon mon expérience, j'ai eu du mal à installer "MySQL-python" - (MySQLdb). Cela m'a fait rechercher d'autres alternatives, j'ai donc trouvé pymysql, et il s'est également installé facilement et a fonctionné en premier lieu comme un charme. Je suggère donc d'utiliser pymysql uniquement au lieu de MySQLdb.

1
Devendra Bhat