web-dev-qa-db-fra.com

Python3 + MySql: Erreur lors du chargement du module MySQLdb: aucun module nommé 'MySQLdb'

Je suis nouveau sur Python et j'essaie de configurer un projet Django pour travailler avec MySql. J'ai lu la documentation ainsi que d'autres publications StackOverflow sur le sujet, mais je ne peux toujours pas le faire fonctionner.

Lorsque j'essaie d'exécuter une migration dans Django j'obtiens l'erreur suivante:

Error loading MySQLdb module: No module named 'MySQLdb'

J'ai installé le recommandé MySql Python Connector (2.0.1) en sélectionnant Ubuntu (puisque je suis sous Mint Linux). Il s'installe correctement. J'obtiens toujours l'erreur. Je n'ai pas besoin d'ajouter cette bibliothèque au projet ou quoi que ce soit, non? Il ressemble à python devrait juste en être conscient et fonctionner correctement. Que puis-je faire? Merci.

EDIT: J'ai oublié de mentionner: je lance Python 3.4 - beaucoup de solutions typiques utilisent toujours 2.7, donc elles ne fonctionnent pas et toutes les solutions avec 3.0 que j'ai essayées sans succès.

16
skaz

J'aurais besoin de voir votre configuration de BASES DE DONNÉES dans settings.py, mais il semble qu'il essaie de charger MySQLDB au lieu du connecteur Mysql Python que vous avez installé. Les BASES DE DONNÉES devraient ressembler à ceci:

DATABASES = {
    'default': {
        'NAME': 'mydatabase',
        'ENGINE': 'mysql.connector.Django',
        'USER': 'myuser',
        'PASSWORD': 'secretpassword',
        'OPTIONS': {
          'autocommit': True,
        },
    }
}

Notez la partie ENGINE ... qui indique Django d'utiliser le connecteur mysql au lieu de MySQLDB ...

plus d'informations disponibles ici: http://bunwich.blogspot.com/2014/02/finally-mysql-connector-that-works-with.htmlhttp: //dev.mysql .com/doc/connector-python/en/connector-python-Django-backend.html

et si vous prévoyez d'utiliser South:

www.pythonanywhere.com/wiki/UsingMySQL

Vous voudrez peut-être noter que le connecteur Oracle est GPL, et il peut y avoir des problèmes de licence avec l'utilisation de ce code. Vois ici:

groups.google.com/forum/#!topic/Django-developers/8r_RVmUe5ys

La documentation Django 1.7 recommande d'utiliser le pilote mysqlclient ...

docs.djangoproject.com/en/1.7/ref/databases/ --voir la section sur les pilotes de l'API Mysql DB

pypi.python.org/pypi/mysqlclient pour ce client ...

-Scott

12
Scott Sharkey

Aucune des réponses existantes ne fonctionnait pour moi sur Ubuntu Server 16.04, j'ai donc exécuté:

Sudo apt-get install libmysqlclient-dev
Sudo -H pip3 install mysqlclient

La première commande me donne la configuration mysql requise par la deuxième commande.

17
Dan-Dev

pip install mysqlclient fonctionne pour moi python3.5

14
Pegasus

Si vous pouvez installer pymysql - qui fonctionne bien pour moi avec Python 3.4 - alors ajoutez ces lignes à votre fichier manage.py dans Django:

try:
    import pymysql
    pymysql.install_as_MySQLdb()
except ImportError:
    pass

Cela fera fonctionner pymysql comme MySQLdb et fonctionnera pour moi.

13