Como instalar o módulo MySQLdb do Python usando o pip?


310

Como posso instalar o módulo MySQLdb para Python usando pip?


11
Se você deseja usar isso com o Python3 (por exemplo, com a versão mais recente do Django), precisará do mysqlclient, pois o MysqlDB não suporta python3. Veja esta pergunta
TD Smith

Estou usando o mysqlclient com Python 2.7 e MariaDB sem problemas até agora.
Dave Everitt

Respostas:


522

É fácil, mas difícil de lembrar a ortografia correta:

pip install mysqlclient

Se você precisar de versões 1.2.x (somente Python herdado), use pip install MySQL-python

Nota: Algumas dependências podem precisar estar em vigor ao executar o comando acima. Algumas dicas sobre como instalá-las em várias plataformas:

Ubuntu 14, Ubuntu 16, Debian 8.6 (Jessie)

sudo apt-get install python-pip python-dev libmysqlclient-dev

Fedora 24:

sudo dnf install python python-devel mysql-devel redhat-rpm-config gcc

Mac OS

brew install mysql-connector-c

se isso falhar, tente

brew install mysql

26
Você não precisa se lembrar do nome inteiro, pode usar pip search mysqle encontrar o que precisa na saída.
WKPlus

12
@WKPlus: certo ... mas encontrei pip search mysqldbe não o encontrei. Assim, eu marquei esta resposta com +1.
Dan H

7
@WKPlus na verdade é praticamente um verdadeiro aborrecimento para encontrar a escolha certa depois de uma pesquisa pip de mysql
kommradHomer

9
Eu tenho que google isso toda vez, tão maldito infurating
sleepycal

3
@DavidOkwii Quando você não está dentro de um virtualenv, o sudo é necessário. Esse pode ter sido o seu problema.
Marian

138

A partir de um novo sistema Ubuntu 14.04.2, esses dois comandos foram necessários:

 apt-get install python-dev libmysqlclient-dev
 pip install MySQL-python

Apenas fazer a "instalação do pip" por si só não funcionou.

Em http://codeinthehole.com/writing/how-to-set-up-mysql-for-python-on-ubuntu/


2
este funcionou, por algum motivo simples pip instalar não funciona limpo no ubuntu
Dap

No ubuntu 14.04, ocorrerá um erro "raise EnvironmentError ("% s não encontrado "% (mysql_config.path,)") e o primeiro cmd corrigiu o problema, obrigado, economize-me um pouco
zhihong

Para corrigir o error: command 'x86_64-linux-gnu-gcc' failed with exit status 1usosudo apt-get install build-essential
FelikZ

Eu me pergunto por que isso é necessário. Uma coisa me ocorre. Testei isso instalando apenas e não construindo. Você criou alguma das coisas que instalou em vez de apenas instalá-las?
precisa

Esta resposta deve ser aceita, é claro, para o Ubuntu.
Roon13

23

Primeiro

pip install pymysql

Em seguida, coloque o código abaixo em __init__.py( projectname/__init__.py)

import pymysql
pymysql.install_as_MySQLdb()

Meu ambiente é (python3.5, django1.10) e esta solução funciona para mim!

Espero que isto ajude!!


3
Uau, eu tenho mais de 5 horas tentando consertar isso sem sucesso. Esta é a única solução que funcionou no Ubuntu 16.04 / python 3.5 / Django 1.11. Obrigado por compartilhar isso.
Paullo 16/11

isso não funciona para mim, meu ambiente é python 3.7 e django 2.2. Por favor, me ajude.
Rajen K Bhagat

Isso deve estar lá em cima. Estou procurando uma solução há horas. Eu tenho um virtualenv com python 2.7 executando o django 1.6. Não consegui instalar o MySQL-python nem o mysqlclient. Não importa o que eu tentei, estava recebendo um "erro fatal: mysql.h". Este fez o truque.
Rolandaven #

22

Eu tive problemas ao instalar a versão de 64 bits do MySQLdb no Windows via Pip (problema na compilação de fontes) [versão de 32 bits instalada ok]. Conseguiu instalar o MySQLdb compilado a partir do arquivo .whl disponível em http://www.lfd.uci.edu/~gohlke/pythonlibs/

O arquivo .whl pode ser instalado via pip como documento em https://pip.pypa.io/en/latest/user_guide/#installing-from-wheels

Por exemplo, se você salvar no, C:/poderá instalar via

pip install c:/MySQL_python-1.2.5-cp27-none-win_amd64.whl

Acompanhamento: se você possui uma versão de 64 bits do Python instalada, deseja instalar a versão AMD de MySQLdb de 64 bits a partir do link acima [isto é, mesmo se você tiver um processador Intel]. Se você tentar instalar a versão de 32 bits, acho que você recebe o erro de roda não suportado nos comentários abaixo.


Falha total. Roda não suportada
M Hornbacher 21/03

3
Eu precisava do cliente MySQL. pip install mysqlclient-1.3.7-cp27-none-win_amd64.whltrabalhando muito bem.
Arsenik

2
Fui para http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python para baixar o whlarquivo (eu dl'd 64 bits para corresponder à minha instalação do Python de 64 bits). Salvei o arquivo no c:/diretório e o executei. pip install c:/MySQL_python-1.2.5-cp27-none-win_amd64.whlEle foi instalado em segundos e estava pronto. Muito fácil!
Curtisp # 11/16

Funcionou para mim também, pois a instalação do pip pelo nome estava falhando.
Artem Russakovskii


7

Tentei todas as opções, mas não consegui fazê-lo funcionar na plataforma Redhat. Fiz o seguinte para fazê-lo funcionar: -

yum install MySQL-python -y

Depois que o pacote foi instalado, foi possível importar o módulo da seguinte maneira no intérprete: -

>>> import MySQLdb
>>> 

A questão foi mencionada especificamente pip. Que distribuição você está usando? No Fedora 24, isso funciona para instalar o módulo via pip: sudo dnf install python python-devel mysql-devel redhat-rpm-config gcc,sudo pip install MySQL-python
Marian

Entendo que a pergunta é via pip, mas pessoalmente não consegui resolvê-la usando o pip. Por isso, acabei de compartilhar minha solução alternativa, que corrigiu o problema para mim. Estou usando o centos 6.8. A lista pip não mostra nada relacionado ao mysql e quando eu faço "pip install MySQL-python", ele gera um erro. Agora, curiosamente, descobri que, uma vez que instalamos através do yum i: e "yum install MySQL-python", sou capaz de importar o MySQLdb. Também feito uma vez com a instalação do yum, eu consegui instalar via pip sem erros.
Ashwin

6

Vá para pycharm e vá para a configuração padrão -> pip (clique duas vezes) - pymsqldb ..--> install - após instalar o uso em um programa como este

import pymysql as MySQLdb

# Open database connection
db = MySQLdb.connect("localhost","root","root","test" )

# prepare a cursor object using cursor() method
cursor = db.cursor()

# execute SQL query using execute() method.
cursor.execute("show tables")

# Fetch a single row using fetchone() method.
data = cursor.fetchall()
print (data)

# disconnect from server
db.close()

3

Se você estiver usando Raspberry Pi [Raspbian OS]

É necessário instalar o comando pip primeiro

apt-get install python-pip

Para que apenas instale Sequently

apt-get install python-dev libmysqlclient-dev

apt-get install python-pip

pip install MySQL-python

A framboesa não é mencionada na pergunta
Héctor Valverde Pareja


3

Se você não conseguir instalar o mysqlclient, também poderá instalar o pymysql :

pip install pymysql

Isso funciona da mesma forma que o MySqldb . Depois disso, use o pymysql todo em vez do MySQLdb


Essa deve ser a resposta.
JayJay123

2

Eu também tive o mesmo problema. Siga estas etapas se você estiver no Windows. Vá para: 1. Meu computador 2. Propriedades do sistema 3. Configurações avançadas do sistema 4. Na guia "Avançado", clique no botão "Variáveis ​​de ambiente" 5. Em seguida, em Variáveis ​​do sistema, você deve adicionar / alterar as seguintes variáveis: PYTHONPATH e caminho. Aqui está uma pasta de como minhas variáveis ​​se parecem: python path:

C:\Python27;C:\Python27\Lib\site-packages;C:\Python27\Lib;C:\Python27\DLLs;C:\Python27\Lib\lib-tk;C:\Python27\Scripts

caminho:

C:\Program Files\MySQL\MySQL Utilities 1.3.5\;C:\Python27;C:\Python27\Lib\site-packages;C:\Python27\Lib;C:\Python27\DLLs;C:\Python27\Lib\lib-tk;C:\Python27\Scripts

Consulte este link para referência


1

A resposta acima é ótima, mas pode haver alguns problemas quando usamos o pip para instalar o MySQL-python no Windows

por exemplo, ele precisa de alguns arquivos associados ao Visual Stdio . Uma solução está instalando o VS2008 ou 2010 ... Obviamente, custa muito.

Outra maneira é a resposta de @ bob90937. Estou aqui para fazer algo a acrescentar.

com http://www.lfd.uci.edu/~gohlke/pythonlibs , você pode baixar muitos binários do Windows de muitos pacotes científicos de extensão de código-fonte aberto para a distribuição oficial do CPython da linguagem de programação Python.

Voltar ao tópico, podemos escolher o MySQL-python (py2) ou Mysqlclient (py3) e usar o pip install para instalar. nos dá uma grande comodidade!


1

Para Python3, eu precisava fazer isso:

python3 -m pip install MySQL


1

no RHEL 7:

sudo yum install yum-utils mariadb-devel python-pip python-devel gcc

sudo /bin/pip2 install MySQL-python


1

Se você possui o Windows instalado no seu sistema, digite o seguinte comando no cmd:

pip install mysql-connector

se o comando acima não funcionar, tente usar:

pip install mysql-connector-python

Agora, se os comandos acima não concluírem o trabalho, tente usar:

pip install mysql-connector-python-rf

É isso que você está pronto para ir agora.


1

Muitas das respostas dadas aqui são bastante confusas, então tentarei colocar de maneira simples. Isso me ajudou a instalar este

pip install pymysql

e use o seguinte comando no arquivo python

import pymysql as MySQLdb

Dessa forma, você pode usar o MySQLdb sem problemas.


0

Se o pip3 não estiver funcionando, você pode tentar:

sudo apt install python3-mysqldb

Resposta não muito boa. Você assume que a versão Python é 3 e o sistema operacional é Debian / Ubuntu, mas você não sabe disso. Aguarde até que o autor adicione mais detalhes.
Phd 12/07

0

Meu ambiente é:

  • Windows 10 Pro,
  • Python 3.7 (python-3.7.1-amd64.exe),
  • MySQL 8.0 (mysql-installer-web-community-8.0.13.0.msi)

Instalação do pip mysqlclient-1.3.13-cp37-cp37m-win_amd64.whl

funciona para mim.

import MySQLdb, sys


# --------------------------------------------------
# Connect to MySQL
# --------------------------------------------------
try:
    db = MySQLdb.connect(host="localhost", user="user", passwd="pass", db="database", charset='cp1251')
except MySQLdb.Error as e:
    print ("Error %d: %s" % (e.args[0], e.args[1]))
    sys.exit()

# Creating cursor 
cursor = db.cursor()

0

na verdade, siga a resposta de @Nick T não funciona para mim, eu tento apt-get install python-mysqldbtrabalhar para mim

root@2fb0da64a933:/home/test_scrapy# apt-get install python-mysqldb
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libmariadbclient18 mysql-common
Suggested packages:
  default-mysql-server | virtual-mysql-server python-egenix-mxdatetime python-mysqldb-dbg
The following NEW packages will be installed:
  libmariadbclient18 mysql-common python-mysqldb
0 upgraded, 3 newly installed, 0 to remove and 29 not upgraded.
Need to get 843 kB of archives.
After this operation, 4611 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://deb.debian.org/debian stretch/main amd64 mysql-common all 5.8+1.0.2 [5608 B]
Get:2 http://deb.debian.org/debian stretch/main amd64 libmariadbclient18 amd64 10.1.38-0+deb9u1 [785 kB]
Get:3 http://deb.debian.org/debian stretch/main amd64 python-mysqldb amd64 1.3.7-1.1 [52.1 kB]                    
Fetched 843 kB in 23s (35.8 kB/s)                                                                                 
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package mysql-common.
(Reading database ... 13223 files and directories currently installed.)
Preparing to unpack .../mysql-common_5.8+1.0.2_all.deb ...
Unpacking mysql-common (5.8+1.0.2) ...
Selecting previously unselected package libmariadbclient18:amd64.
Preparing to unpack .../libmariadbclient18_10.1.38-0+deb9u1_amd64.deb ...
Unpacking libmariadbclient18:amd64 (10.1.38-0+deb9u1) ...
Selecting previously unselected package python-mysqldb.
Preparing to unpack .../python-mysqldb_1.3.7-1.1_amd64.deb ...
Unpacking python-mysqldb (1.3.7-1.1) ...
Setting up mysql-common (5.8+1.0.2) ...
update-alternatives: using /etc/mysql/my.cnf.fallback to provide /etc/mysql/my.cnf (my.cnf) in auto mode
Setting up libmariadbclient18:amd64 (10.1.38-0+deb9u1) ...
Processing triggers for libc-bin (2.24-11+deb9u3) ...
Setting up python-mysqldb (1.3.7-1.1) ...
root@2fb0da64a933:/home/test_scrapy# python 
Python 2.7.13 (default, Nov 24 2017, 17:33:09) 
[GCC 6.3.0 20170516] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import MySQLdb
>>> 
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.