django.core.exceptions.ImproperlyConfigured: Erreur lors du chargement du module MySQLdb: Aucun module nommé MySQLdb

94

Le problème auquel je suis confronté en essayant de me connecter à la base de données pour mysql. J'ai également donné les paramètres de base de données que j'ai utilisés.

 Traceback (most recent call last):
 File "manage.py", line 10, in <module>
 execute_from_command_line(sys.argv)
 File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 453, in execute_from_command_line
utility.execute()
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 272, in fetch_command
klass = load_command_class(app_name, subcommand)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 77, in load_command_class
module = import_module('%s.management.commands.%s' % (app_name, name))
File "/home/arundhati/Desktop/test/testprac/local/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/commands/syncdb.py", line 8, in <module>
from django.core.management.sql import custom_sql_for_model, emit_post_sync_signal
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/core/management/sql.py", line 9, in <module>
from django.db import models
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/db/__init__.py", line 40, in <module>
backend = load_backend(connection.settings_dict['ENGINE'])
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/db/__init__.py", line 34, in __getattr__
return getattr(connections[DEFAULT_DB_ALIAS], item)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/db/utils.py", line 93, in __getitem__
backend = load_backend(db['ENGINE'])
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/db/utils.py", line 27, in load_backend
return import_module('.base', backend_name)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/home/ar/Desktop/test/testprac/local/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 17, in <module>
raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

Paramètres de la base de données ::

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'ar_test_db',                      # Or path to database file if using 
        # The following settings are not used with sqlite3:
        'USER': '',
        'PASSWORD': '',
        'HOST': '',                      # Empty for localhost through domain sockets or   '127.0.0.1' for localhost through TCP.
        'PORT': '',                      # Set to empty string for default.
    }
}

Merci beaucoup pour l'aide !!

commence-le
la source

Réponses:

136

Il semble que vous n'ayez pas installé le package python mysql, essayez:

pip install mysql-python

ou si vous n'utilisez pas d'environnement virtuel (sur les hôtes * nix):

sudo pip install mysql-python
Ron E
la source
Utilisez-vous un environnement virtuel? Je vous recommande de faire juste pour garder les choses organisées. Si ce n'est pas une option, vous devrez exécuter pip avec les privilèges de super-utilisateur: sudo pip install mysql-python
Ron E
2
J'utilise virtual env, et j'ai installé mysql, django ... mais quand je fais python manage.py syncdb cela me donne la même erreur que j'ai postée
getitstarted
ai-je un problème de version par hasard? J'utilise django 1.5, python 2.7.3 avec mon sql (14.14 pour debian)
Getitstarted
4
avec python 3 est: pip install mysqlclient
sadalsuud
1
Cela ne fonctionne pas en python3. nécessite ConfigParser qui n'est pas disponible en python3
gogagubi
40

vous devez installer python-mysqldb - interface Python vers MySQL

Essayer
sudo apt-get install python-mysqldb

Rachi
la source
38

Si vous rencontrez des erreurs lors de l'installation de mysqlclient avec pip, vous risquez de ne pas avoir la bibliothèque de développement mysql. Installez-le en exécutant:

apt-get install libmysqlclient-dev

et essayez à nouveau d'installer mysqlclient:

pip install mysqlclient
PSDDP
la source
2
C'était pip install mysqlclient. J'avais oublié de l'ajouter à mon fichier requirements.txt, donc même si la base de données MySQL était là et peuplée, mon serveur Web Django ne pouvait pas interagir avec elle.
Blairg23
merci cette réponse a sauvé ma journée j'ai essayé de faire fonctionner mysql avec django pendant 2 jours :)
rishabhr0y
13

Ma réponse est similaire à @ Ron-E, mais j'ai eu quelques erreurs / corrections supplémentaires, donc je mets mes étapes ci-dessous pour Mac OSX sur Mavericks et Python 2.7.6.

  1. Installez le package Python mysql (si vous obtenez un message de réussite, ignorez les étapes ci-dessous)

    pip install mysql-python
  2. Quand j'ai fait ce qui précède, j'ai eu l'erreur "EnvironmentError: mysql_config not found" entrez la description de l'image ici Pour résoudre ce problème, j'ai fait ce qui suit dans le terminal:

    export PATH=$PATH:/usr/local/mysql/bin
  3. Lorsque je relance l'étape 1, j'obtiens une nouvelle erreur "erreur: la commande 'cc' a échoué avec l'état de sortie 1" entrez la description de l'image ici Pour résoudre ce problème, j'ai fait ce qui suit dans le terminal:

     export CFLAGS=-Qunused-arguments
     export CPPFLAGS=-Qunused-arguments
  4. J'ai relancé l'étape 1 et j'ai reçu le message de réussite «mysql-python installé avec succès»!

Volonté
la source
Merci pour la suggestion. J'ai eu le premier de votre problème.
user2772346
J'ai suivi votre chemin mais la première erreur se produit toujours dans mon cas. Et pour `export CFLAGS = -Qunused-arguments` le terminal donne cette erreur:-bash: export: =-Qunused-arguments': not a valid identifier
RegarBoy
12

Lorsque j'ai configuré l'environnement de développement Django pour PyCharm dans Mac OS X Mountain Lion avec l'application python, mysql, suite pro, j'ai eu l'erreur identique en tant que propriétaire de ce fil. Cependant, ma réponse pour ceux qui exécutent python-mysqldb sous Mac OS Mountain Lion x86_x64 (MySql et Python devraient également être de la même architecture) et ont déjà tout essayé comme pip et etc. Pour résoudre ce problème, procédez comme suit:

  1. Téléchargez MySql pour Python à partir d' ici
  2. Décompressez le fichier téléchargé. Dans la fenêtre du terminal, procédez comme suit: tar xvfz downloade.tar.
  3. cd / vers un répertoire non taré
  4. Exécutez l'installation sudo python setup.py
  5. Si vous obtenez une erreur comme celle-ci: "Erreur d'environnement: / usr / local / bin / mysql_config introuvable" alors essayez d'ajouter le chemin ass suit: "export PATH = $ PATH: / usr / local / mysql / bin". Mais ça ne m'a pas aidé et j'ai trouvé une autre solution. À la fin de la sortie d'erreur d'exécution de commande qui ressemble à ceci:

    Fichier "/path_to_file/MySQL-python-1.2.4b4/setup_posix.py", ligne 25, dans mysql_config lever EnvironmentError ("% s not found"% (mysql_config.path,))

  6. Ouvrez setup_posix.py avec vim et allez à la ligne 25 (dans votre cas, cela peut être différent sauf s'il s'agit de la même version).

  7. La ligne 25 devrait ressembler à ceci après votre édition à moins que votre mysql n'ait un lien symbolique comme suit '/ usr / local / mysql / bin /':

    f = popen("%s --%s" % ('/usr/local/mysql/bin/mysql_config', what))

  8. Après cela, j'ai eu une autre erreur comme suit:

    django.core.exceptions.ImproperlyConfigured: Erreur de chargement du module MySQLdb: dlopen (/Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so, 2) : Bibliothèque non chargée: libmysqlclient.18.dylib Référencé à partir de: /Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so Raison: image non trouvée

  9. Enfin, j'ai suivi dans la console:

    sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

Actuellement, tout fonctionne bien. J'espère donc que cela sera utile pour quelqu'un qui utilise Mac. :)

Khamidulla
la source
Merci beaucoup. Il m'a fallu presque une semaine pour exécuter mon premier projet en utilisant mysql haha. Ouf ...
Avigit
Merci un homme de tonne! tu as sauvé ma journée! J'utilisais mac et j'obtenais le même problème.
user2772346
7

Il vous manque la mysqldbbibliothèque python . Utilisez cette commande (pour Debian / Ubuntu) pour l'installer: sudo apt-get install python-mysqldb

Haimei
la source
C'est une réponse, mais je pense que ce serait formidable si vous pouviez ajouter plus de détails qu'une seule ligne. Merci!
Uli Köhler
La commande ci-dessus nous aide à installer l'interface Python dans la base de données MySQL.
Haimei
7

C'est parce qu'il n'a pas trouvé de connecteur SQL. essayer:

pip install mysqlclient
Anand Prakash
la source
4

Pour les versions Ubuntu 16.04 et 18.04 ou python 3

sudo apt-get install python3-mysqldb
Gowthaman D
la source
4

Si vous utilisez pyhton version 3.4 ou supérieure. tu dois installer

sudo apt-get install python3-dev libmysqlclient-dev 

dans le terminal. puis installez pip install mysqlclientsur votre environnement virtuel ou là où vous avez installé pip.

Selvakumar
la source
4

J'ai résolu ce problème dans cet environnement:

$ pyenv --version
pyenv 1.2.9

$ python --version
Python 3.7.2

$ python -m django --version
2.1.7

./settings.py

DATABASES = {
    'default': {
        'NAME': 'my_db_name',
        'ENGINE': 'mysql.connector.django',   # 'django.db.backends.mysql'
        'USER': '<user>',
        'PASSWORD': '<pass>',
        'HOST': 'localhost',
        'PORT': 3306,
        'OPTIONS': {
            'autocommit': True,
        },
    }
}

Si vous utilisez 'ENGINE': 'mysql.connector.django', installez le pilote en exécutant:

$ pip install mysql-connector-python
Successfully installed mysql-connector-python-8.0.15 protobuf-3.7.0 six-1.12.0

Notez que cela $ pip install mysql-pythonn'a pas fonctionné pour moi.

Notez que si vous utilisez 'ENGINE': 'django.db.backends.mysql', vous devez installer le pilote exécutant:
$ pip install mysqlclient

Enfin exécutez:
$ python manage.py migrate

Si tout va bien, python crée toutes ces bases de données d'id de tables:

auth_group
auth_group_permissions
auth_permission
auth_user
auth_user_groups
auth_user_user_permissions
django_admin_log
django_content_type
django_migrations
django_session
JavierFuentes
la source
3

Sur Ubuntu, il est conseillé d'utiliser le référentiel des distributions.

sudo apt-get install python-mysqldb
Gaurav Agarwal
la source
2

Avec le même message d'erreur que Will, cela a fonctionné pour moi d'installer d'abord mysql car le fichier manquant sera ajouté lors de l'installation. Donc après

brew install mysql

pip install mysql-python

couru sans erreurs.

cmdAmir
la source
Commande "/ usr / bin / python -u -c" import setuptools, tokenize; __ file __ = '/ private / var / folders / yn / nrq74lgs6kqdzcr035p_5g280000gn / T / pip-build-jwQcm5 / mysql-python / setup.py'; f = getattr (tokenize, 'open', open) ( file ); code = f.read (). replace ('\ r \ n', '\ n'); f.close (); exec (compile (code, file , 'exec')) "install --record /var/folders/yn/nrq74lgs6kqdzcr035p_5g280000gn/T/pip-UmTWRJ-record/install-record.txt --single-version-external-managed --compile" a échoué avec une erreur code 1 dans / private / var / folders / yn / nrq74lgs6kqdzcr035p_5g280000gn / T / pip-build-jwQcm5 / mysql-python /
tisuchi
2

Cela m'est également arrivé et je crois que c'est devenu une erreur courante non seulement pour les développeurs Django mais aussi pour Flask, donc la façon dont j'ai résolu ce problème a été d'utiliser brew.

  1. brew install mysql
  2. sudo pip install mysql-python

De cette façon, chaque problème a été résolu et les deux frameworks fonctionnent parfaitement.

PS: Pour ceux qui utilisent macports (comme moi), cela peut être un problème car brew fonctionne à un niveau différent, mon conseil est d'utiliser brew au lieu de macports

J'espère que je pourrais être utile.

pykimera
la source
1

J'avais le même problème. Ce qui suit a résolu mon problème

Exécutez pip install pymysql dans votre shell

Ensuite, modifiez le fichier init.py dans le répertoire d'origine de votre projet (le même que settings.py), puis

ajouter:

importer pymysql

pymysql.install_as_MySQLdb ()

Cela devrait résoudre le problème.

Vaishnav Raja
la source
"Ensuite, éditez le fichier init.py dans le répertoire d'origine de votre projet" - voulez-vous dire __init__.py?
Alex Yu
1

essayer:

pip install mysqlclient

Je recommande de l'utiliser dans un environnement virtuel.

Omid Estaji
la source
0

Juste pour ajouter d'autres réponses, si vous utilisez Django, il est conseillé d'installer mysql-python AVANT d'installer Django.

Anoyz
la source
0

J'ai perdu beaucoup de temps là-dessus. Il s'avère que la bibliothèque de base de données par défaut n'est pas prise en charge pour Python 3. Vous devez en utiliser une autre .

CoderGuy123
la source
0

si l'erreur ressemble à ceci

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module:
dlopen(/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/_mysql.so, 2): Library not loaded: 
/usr/local/opt/mysql/lib/libmysqlclient.20.dylib
Referenced from: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/_mysql.so

puis essayez :

pip install python-mysqldb
blueChair
la source
0

Face à un problème similaire. J'ai essayé d'installer à l' mysql-pythonaide de pip, mais cela a échoué en raison d'erreurs de dépendance gcc.

La solution qui a fonctionné pour moi

conda install mysql-python

Veuillez noter que j'avais déjà installé anaconda, qui n'avait pas de dépendance gcc.

Ayush Vatsyayan
la source
pourriez-vous nous en dire plus
Ayush Vatsyayan
-2

On dirait que vous n'avez pas l'autorisation sur le dossier Python. Essayersudo chown -R $USER /Library/Python/2.7

omkar ghule
la source
-3

Vous pouvez peut-être essayer le mode de fonctionnement suivant:
sudo python manage.py runserver 0.0.0.0:8000

yanlong xu
la source