Este artigo é para quem estiver criando um projeto Django e configurando ele para trabalhar com o MySql, ao rodar o servidor com o comando python manage.py runserver e receber a seguinte mensagem abaixo:

    Error loading MySQLdb module: No module named MySQLdb

Então vamos lá, a primeira questão a ser resolvida é: qual versão de Python e Django você está utilizando?

  • Django 1.6 pode ser utilizado com Python 2
  • Django 1.7 deve ser utilizado com Python 3

A solução depende da versão.

Resolvendo “No module named MySQLdb” com Python 2

No Debian execute…

apt-get install python-mysqldb

No CentOS (HedHat) execute…

yum install MySQL-python

Para fazer o teste final rode o servidor do Django python manage.py runserver.

Nota:

Tentei instalar o pacote MySQL-python através do PIP, veja o comando:

pip install MySQL-python

Foi um show de erros. No meu caso, a instalação reclamou do mysql_config.

EnvironmentError: mysql_config not found

Corrigi executando instalando o pacote python-mysqldb pelo apt-get (como já mencionado na receita acima):

apt-get install python-mysqldb

OK, aí tentei novamente instalar o mysql_config pip install MySQL-python e…

Requirement already satisfied

Eu hein, vai entender!!!N

Resolvendo “No module named MySQLdb” com Python 3

Aqui é que mora o problema, pois eu acabei resolvendo com a ajuda do virtualenv, mas talvez você queira resolver sem a ajuda dele. Se for o caso, aconselho a tentar dessa forma (sem o virtualenv) e caso não consiga, tentar com o virtualenv.

Você deve instalar o PyMySQL com o pip só que o pip deve ser o da versão 3x.

Em outras palavras, o pip deve ter sido instalado com Python 3 e agora ele deve apontar para o Python 3, caso contrário você não conseguirá resolver o problema.

Para descobrir as versões do pip execute ls -l /usr/local/bin/pip*

Com os resultados obtidos experimente

pip --version
pip3 --version
pip3.2 --version
pip3.4 --version

No meu caso, digitnado pip3.2 --version eu visualizo…

pip 1.5.6 from /usr/local/lib/python3.2/dist-packages (python 3.2)

Logo, eu tenho certeza de que pip3.2 (no meu caso) está funcionado com Python 3.

Pronto, agora é só instalar o driver:

pip3x install pymysql

Inclua no arquivo mysite/mysite/__init__.py as linhas abaixo:

import pymysql
pymysql.install_as_MySQLdb()

Para testar, tente iniciar o servidor python manage.py runserver.