django.core.exceptions.ImproperlyConfigured: Erro ao carregar o módulo MySQLdb: Nenhum módulo chamado MySQLdb

93

O problema que estou enfrentando ao tentar me conectar ao banco de dados para o mysql. Também forneci as configurações do banco de dados que usei.

 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

Configurações do banco de dados:

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

Muito obrigado pela ajuda !!

começar
fonte

Respostas:

136

Parece que você não tem o pacote python mysql instalado, tente:

pip install mysql-python

ou se não estiver usando um ambiente virtual (em hosts * nix):

sudo pip install mysql-python
Ron E
fonte
Você está usando um ambiente virtual? Eu recomendo que você faça apenas para manter as coisas organizadas. Se isso não for uma opção, você precisará executar pip com privilégios de superusuário: sudo pip install mysql-python
Ron E
2
Estou usando o env virtual e instalei o mysql, o django ... no entanto, quando faço o python manage.py syncdb, ele me dá o mesmo erro que postei
getitstarted
eu tenho um problema de versão por acaso? Estou usando django 1.5, python 2.7.3 com meu sql (14.14 para debian)
getitstarted
4
com python 3 é: pip install mysqlclient
sadalsuud
1
Isso em python3 não funciona. requer o ConfigParser, que não está disponível em python3
gogagubi
40

você tem que instalar python-mysqldb - interface Python para MySQL

Experimentar
sudo apt-get install python-mysqldb

Rashi
fonte
38

Se você receber erros ao tentar instalar o mysqlclient com pip, você pode não ter a biblioteca dev mysql. Instale-o executando:

apt-get install libmysqlclient-dev

e tente instalar o mysqlclient novamente:

pip install mysqlclient
Psddp
fonte
2
Foi pip install mysqlclient. Eu tinha esquecido de adicionar isso ao meu arquivo requirements.txt, então, embora o banco de dados MySQL estivesse lá e populado, meu servidor Django da web não conseguia interagir com ele.
Blairg23 de
obrigado, essa resposta salvou meu dia, estou tentando fazer o mysql funcionar com django por 2 dias :)
rishabhr0y
13

Minha resposta é semelhante a @Ron-E, mas recebi mais alguns erros / correções, então estou colocando minhas etapas abaixo para Mac OSX em Mavericks e Python 2.7.6.

  1. Instale o pacote Python mysql (se você receber uma mensagem de sucesso, ignore as etapas abaixo)

    pip install mysql-python
  2. Quando fiz o acima, recebi o erro "EnvironmentError: mysql_config not found" insira a descrição da imagem aqui Para corrigir isso, fiz o seguinte no terminal:

    export PATH=$PATH:/usr/local/mysql/bin
  3. Quando reexamino a etapa 1, recebo um novo erro "erro: o comando 'cc' falhou com o status de saída 1" insira a descrição da imagem aqui Para corrigir isso, fiz o seguinte no terminal:

     export CFLAGS=-Qunused-arguments
     export CPPFLAGS=-Qunused-arguments
  4. Repeti a etapa 1 e recebi a mensagem de sucesso 'mysql-python instalado com sucesso'!

Vai
fonte
Obrigado pela sugestão. Eu tenho o primeiro de seu problema.
user2772346
Eu segui seu caminho, mas o primeiro erro está sempre ocorrendo no meu caso. E para `export CFLAGS = -Qunused-arguments` o terminal está apresentando o erro:-bash: export: =-Qunused-arguments': not a valid identifier
RegarBoy
12

Quando configurei o ambiente de desenvolvimento Django para PyCharm no Mac OS X Mountain Lion com o aplicativo python, mysql, sequel pro, recebi o mesmo erro do proprietário deste segmento. No entanto, minha resposta para eles que estão executando python-mysqldb no Mac OS Mountain Lion x86_x64 (MySql e Python também devem ter a mesma arquitetura) e já tentaram de tudo como pip e etc. Para corrigir este problema, siga os seguintes passos:

  1. Baixe MySql para Python aqui
  2. Descompacte o arquivo baixado. Na janela do terminal, faça o seguinte: tar xvfz downloade.tar.
  3. cd / para diretório descompactado
  4. Execute sudo python setup.py install
  5. Se você receber um erro como este: "Erro de ambiente: / usr / local / bin / mysql_config não encontrado", tente adicionar o caminho a seguir: "export PATH = $ PATH: / usr / local / mysql / bin". Mas a id não me ajudou e encontrei outra solução. No final da saída de erro de execução de comando que se parece com isto:

    Arquivo "/path_to_file/MySQL-python-1.2.4b4/setup_posix.py", linha 25, em mysql_config raise EnvironmentError ("% s não encontrado"% (mysql_config.path,))

  6. Abra setup_posix.py com vim e vá para a linha 25 (no seu caso pode ser diferente, a menos que seja da mesma versão).

  7. A linha 25 deve ficar assim após a sua edição, a menos que seu mysql tenha um link simbólico como a seguir '/ usr / local / mysql / bin /':

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

  8. Depois disso, recebi outro erro como o seguinte:

    django.core.exceptions.ImproperlyConfigured: Erro ao carregar o 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 não carregada: libmysqlclient.18.dylib Referenciado em: /Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so Motivo: imagem não encontrada

  9. Finalmente fiz o seguinte no console:

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

Atualmente tudo funciona bem. Portanto, espero que seja útil para alguém que usa Mac. :)

Khamidulla
fonte
Muito obrigado. Levei quase uma semana apenas para executar meu primeiro projeto usando mysql haha. Ufa ...
Avigit
Muito obrigado cara! você salvou meu dia! eu estava usando mac e recebendo o mesmo problema.
user2772346
7

Você está faltando a mysqldbbiblioteca python . Use este comando (para Debian / Ubuntu) para instalá-lo: sudo apt-get install python-mysqldb

Haimei
fonte
Esta é uma resposta, mas acho que seria ótimo se você pudesse adicionar mais detalhes do que uma única linha. Obrigado!
Uli Köhler
O comando acima nos ajuda a instalar a interface Python no banco de dados MySQL.
Haimei
7

É porque não encontrou o conector sql. experimentar:

pip install mysqlclient
Anand Prakash
fonte
4

Para Ubuntu 16.04 e 18.04 ou versões python 3

sudo apt-get install python3-mysqldb
Gowthaman D
fonte
Muito obrigado. Funciona para mim
seunggabi
4

Tenho resolvido este problema neste ambiente:

$ 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,
        },
    }
}

Se você usar 'ENGINE': 'mysql.connector.django', instale o driver executando:

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

Observe que $ pip install mysql-pythonnão funcionou para mim.

Observe que se você usar 'ENGINE': 'django.db.backends.mysql', deve instalar o driver executando:
$ pip install mysqlclient

Finalmente execute:
$ python manage.py migrate

Se estiver tudo bem, o python criará todos esses bancos de dados de ID de tabelas:

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

No Ubuntu, é aconselhável usar o repositório de distribuições.

sudo apt-get install python-mysqldb
Gaurav Agarwal
fonte
3

Se você estiver usando o pyhton versão 3.4 ou superior. você tem que instalar

sudo apt-get install python3-dev libmysqlclient-dev 

no terminal. em seguida, instale pip install mysqlclientem seu ambiente virtual ou onde você instalou o pip.

selvakumar
fonte
2

Com a mesma mensagem de erro de Will, funcionou para mim instalar o mysql primeiro, pois o arquivo ausente será adicionado durante a instalação. Então depois

brew install mysql

pip install mysql-python

correu sem erros.

cmdAmir
fonte
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) ( arquivo ); código = f.read (). substituir ('\ r \ n', '\ n'); f.close (); exec (compilar (código, arquivo , 'exec')) "install --record /var/folders/yn/nrq74lgs6kqdzcr035p_5g280000gn/T/pip-UmTWRJ-record/install-record.txt --single-version-externally-managed --compile" falhou com erro código 1 em / private / var / folders / yn / nrq74lgs6kqdzcr035p_5g280000gn / T / pip-build-jwQcm5 / mysql-python /
tisuchi
2

Isso também aconteceu comigo e acredito que se tornou um erro comum não apenas para desenvolvedores Django, mas também para Flask, então a maneira que resolvi esse problema foi usando o brew.

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

Desta forma, todos os problemas foram resolvidos e ambos os frameworks funcionam perfeitamente bem.

PS: Para aqueles que usam macports (como eu), isso pode ser um problema, pois a cerveja funciona em um nível diferente, meu conselho é usar cerveja em vez de macports

Espero poder ser útil.

pykimera
fonte
1

Eu estava tendo o mesmo problema. O seguinte resolveu meu problema

Execute pip install pymysql em seu shell

Em seguida, edite o arquivo init.py no diretório de origem do projeto (o mesmo que settings.py) e depois

adicionar:

importar pymysql

pymysql.install_as_MySQLdb ()

isso deve resolver o problema.

Vaishnav Raja
fonte
"Então, edite o arquivo init.py no diretório de origem do projeto" - você quer dizer __init__.py?
Alex Yu
1

experimentar:

pip install mysqlclient

Recomendo usá-lo em um ambiente virtual.

Omid Estaji
fonte
0

Apenas para adicionar outras respostas, se você estiver usando Django, é aconselhável instalar mysql-python ANTES de instalar o Django.

Anoyz
fonte
0

Perdi muito tempo com isso. Acontece que a biblioteca de banco de dados padrão não é compatível com Python 3. Você precisa usar uma diferente .

CoderGuy123
fonte
0

se o erro se parece com este

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

Então tente :

pip install python-mysqldb
blueChair
fonte
0

Enfrentou um problema semelhante. Eu tentei instalarmysql-python usando pip, mas falhou devido a erros de dependência do gcc.

A solução que funcionou para mim

conda install mysql-python

Observe que eu já tinha o anaconda instalado, que não tinha dependência do gcc.

Ayush Vatsyayan
fonte
você poderia elaborar sobre isso
Ayush Vatsyayan
-2

Parece que você não tem permissão para a pasta Python. Experimentarsudo chown -R $USER /Library/Python/2.7

Omkar Ghule
fonte
-3

Talvez você possa tentar o seguinte modo de operação:
sudo python manage.py runserver 0.0.0.0:8000

yanlong xu
fonte