django.core.exceptions.ImproperlyConfigured: Error al cargar el módulo MySQLdb: ningún módulo llamado MySQLdb

94

El problema al que me enfrento al intentar conectarme a la base de datos para mysql. También he dado la configuración de la base de datos que he utilizado.

 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

Configuración de base de datos:

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.
    }
}

Muchas gracias por la ayuda !!

empezar
fuente

Respuestas:

136

Parece que no tiene instalado el paquete python mysql, intente:

pip install mysql-python

o si no usa un entorno virtual (en hosts * nix):

sudo pip install mysql-python
Ron E
fuente
¿Está utilizando un entorno virtual? Te recomiendo que lo hagas solo para mantener las cosas organizadas. Si esa no es una opción, deberá ejecutar pip con privilegios de superusuario: sudo pip install mysql-python
Ron E
2
Estoy usando un entorno virtual y he instalado mysql, django ... sin embargo, cuando hago python manage.py syncdb me da el mismo error que
publiqué
¿Tengo un problema de versión por casualidad? Estoy usando django 1.5, python 2.7.3 con mi sql (14.14 para debian)
getitstarted
4
con python 3 es: pip install mysqlclient
sadalsuud
1
Esto en python3 no funciona. requiere ConfigParser que no está disponible en python3
gogagubi
40

tienes que instalar python-mysqldb - interfaz de Python para MySQL

Tratar
sudo apt-get install python-mysqldb

Rashi
fuente
38

Si obtiene errores al intentar instalar mysqlclient con pip, es posible que no tenga la biblioteca dev de mysql. Instálelo ejecutando:

apt-get install libmysqlclient-dev

e intente nuevamente instalar mysqlclient:

pip install mysqlclient
Psddp
fuente
2
Fue pip install mysqlclient. Me había olvidado de agregar esto a mi archivo requirements.txt, así que aunque la base de datos MySQL estaba allí y poblada, mi servidor web Django no podía interactuar con ella.
Blairg 23
gracias, esta respuesta me salvó el
día.He
13

Mi respuesta es similar a @ Ron-E, pero obtuve algunos errores / correcciones más, así que estoy poniendo mis pasos a continuación para Mac OSX en Mavericks y Python 2.7.6.

  1. Instale el paquete Python mysql (si recibe un mensaje de éxito, ignore los pasos a continuación)

    pip install mysql-python
  2. Cuando hice lo anterior, recibí el error "EnvironmentError: mysql_config not found" ingrese la descripción de la imagen aquí Para solucionar este problema, hice lo siguiente en la terminal:

    export PATH=$PATH:/usr/local/mysql/bin
  3. Cuando volví a ejecutar el paso 1, aparece un nuevo error "error: el comando 'cc' falló con el estado de salida 1" ingrese la descripción de la imagen aquí Para solucionar este problema, hice lo siguiente en la terminal:

     export CFLAGS=-Qunused-arguments
     export CPPFLAGS=-Qunused-arguments
  4. Volví a ejecutar el paso 1 y recibí el mensaje de éxito '¡Instalé correctamente mysql-python'!

Será
fuente
Gracias por la sugerencia. Primero tengo tu problema.
user2772346
He seguido tu camino pero el primer error siempre ocurre en mi caso. Y para el terminal `export CFLAGS = -Qunused-parameters` aparece ese error:-bash: export: =-Qunused-arguments': not a valid identifier
RegarBoy
12

Cuando configuré el entorno de desarrollo de Django para PyCharm en Mac OS X Mountain Lion con python, mysql, la aplicación secuela pro, obtuve el mismo error que el propietario de este hilo. Sin embargo, mi respuesta para aquellos que están ejecutando python-mysqldb en Mac OS Mountain Lion x86_x64 (MySql y Python también deberían tener la misma arquitectura) y ya probaron todo como pip, etc. Para solucionar este problema, siga los siguientes pasos:

  1. Descarga MySql para Python desde aquí
  2. Untar el archivo descargado. En la ventana de terminal, haga lo siguiente: tar xvfz downloade.tar.
  3. cd / al directorio no tarado
  4. Ejecute sudo python setup.py install
  5. Si recibe un error como este: "Error de entorno: / usr / local / bin / mysql_config no encontrado", intente agregar la ruta como sigue: "export PATH = $ PATH: / usr / local / mysql / bin". Pero id no me ayudó y encontré otra solución. Al final de la salida del error de ejecución del comando que se ve así:

    Archivo "/path_to_file/MySQL-python-1.2.4b4/setup_posix.py", línea 25, en mysql_config raise EnvironmentError ("% s not found"% (mysql_config.path,))

  6. Abra setup_posix.py con vim y vaya a la línea 25 (en su caso puede ser diferente a menos que sea la misma versión).

  7. La línea 25 debería verse así después de su edición a menos que su mysql tenga un enlace simbólico como sigue '/ usr / local / mysql / bin /':

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

  8. Después de esto, recibí otro error de la siguiente manera:

    django.core.exceptions.ImproperlyConfigured: Error al cargar el módulo MySQLdb: dlopen (/Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so, 2) : Biblioteca no cargada: libmysqlclient.18.dylib Referencia de: /Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so Razón: imagen no encontrada

  9. Finalmente hice lo siguiente en la consola:

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

Actualmente todo funciona bien. Así que espero que sea útil para alguien que usa Mac. :)

Khamidulla
fuente
Muchas gracias. Me tomó casi una semana ejecutar mi primer proyecto usando mysql jaja.
Uf
¡Muchas gracias, hombre! ¡Salvaste mi día! Estaba usando mac y obteniendo el mismo problema.
user2772346
7

Falta la mysqldbbiblioteca de Python . Utilice este comando (para Debian / Ubuntu) para instalarlo: sudo apt-get install python-mysqldb

Haimei
fuente
Esta es una respuesta, pero creo que sería genial si pudiera agregar más detalles que una sola línea. ¡Gracias!
Uli Köhler
El comando anterior nos ayuda a instalar la interfaz de Python en la base de datos MySQL.
Haimei
7

Es porque no encontró el conector sql. tratar:

pip install mysqlclient
Anand Prakash
fuente
4

Para las versiones de Ubuntu 16.04 y 18.04 o python 3

sudo apt-get install python3-mysqldb
Gowthaman D
fuente
4

Si está utilizando pyhton versión 3.4 o superior. tienes que instalar

sudo apt-get install python3-dev libmysqlclient-dev 

en terminal. luego instálelo pip install mysqlclienten su entorno virtual o donde instaló pip.

selvakumar
fuente
4

He resuelto este problema en este entorno:

$ 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 lo usa 'ENGINE': 'mysql.connector.django', instale el controlador ejecutando:

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

Tenga en cuenta que $ pip install mysql-pythonno funcionó para mí.

Tenga en cuenta que si lo usa 'ENGINE': 'django.db.backends.mysql', debe instalar el controlador ejecutando:
$ pip install mysqlclient

Finalmente ejecuta:
$ python manage.py migrate

Si está bien, Python crea todas estas tablas de base de datos de identificación:

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
fuente
3

En Ubuntu, se recomienda utilizar el repositorio de distribuciones.

sudo apt-get install python-mysqldb
Gaurav Agarwal
fuente
2

Con el mismo mensaje de error que Will, me funcionó instalar mysql primero, ya que el archivo que falta se agregará durante la instalación. Así que después

brew install mysql

pip install mysql-python

corrió sin errores.

cmdAmir
fuente
Comando "/ 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 (tokenizar, 'abrir', abrir) ( archivo ); código = f.read (). replace ('\ r \ n', '\ n'); f.close (); exec (compilar (código, file , 'exec')) "install --record /var/folders/yn/nrq74lgs6kqdzcr035p_5g280000gn/T/pip-UmTWRJ-record/install-record.txt --single-version-externally-managed --compile" falló con error código 1 en / private / var / carpetas / yn / nrq74lgs6kqdzcr035p_5g280000gn / T / pip-build-jwQcm5 / mysql-python /
tisuchi
2

Esto también sucedió conmigo y creo que se ha convertido en un error común no solo para los desarrolladores de Django sino también para Flask, así que la forma en que resolví este problema fue usando brew.

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

De esta manera, se resolvieron todos los problemas y ambos marcos funcionan absolutamente bien.

PD: para aquellos que usan macports (como yo), esto puede ser un problema ya que brew funciona en un nivel diferente, mi consejo es usar brew en lugar de macports

Espero poder ser de ayuda.

pykimera
fuente
1

Estaba teniendo el mismo problema. Lo siguiente resolvió mi problema

Ejecute pip install pymysql en su shell

Luego, edite el archivo init.py en el directorio de origen de su proyecto (lo mismo que settings.py) y luego

añadir:

importar pymysql

pymysql.install_as_MySQLdb ()

esto deberia resolver el problema.

Vaishnav Raja
fuente
"Luego, edite el archivo init.py en el directorio de origen de su proyecto", ¿quiere decir __init__.py?
Alex Yu
1

tratar:

pip install mysqlclient

Recomiendo usarlo en un entorno virtual.

Omid Estaji
fuente
0

Solo para agregar a otras respuestas, si está usando Django, es recomendable que instale mysql-python ANTES de instalar Django.

Anoyz
fuente
0

si el error se ve así

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

entonces intenta :

pip install python-mysqldb
blueChair
fuente
0

Enfrentó un problema similar. Intenté instalar mysql-pythonusando pip, pero fallé debido a errores de dependencia de gcc.

La solución que funcionó para mí

conda install mysql-python

Tenga en cuenta que ya tenía anaconda instalada, que no tenía dependencia de gcc.

Ayush Vatsyayan
fuente
¿Podrías
ampliarlo
-2

Parece que no tienes permiso para la carpeta de Python. Tratarsudo chown -R $USER /Library/Python/2.7

omkar ghule
fuente
-3

Quizás puedas probar el siguiente modo de operación:
sudo python manage.py runserver 0.0.0.0:8000

yanlong xu
fuente