Come installare il modulo Python MySQLdb usando pip?


310

Come posso installare il modulo MySQLdb per Python usando pip?


11
Se stai cercando di usarlo con Python3 (ad esempio, con la versione più recente di Django) avrai bisogno di mysqlclient poiché MysqlDB non supporta python3. Vedi questa domanda
TD Smith,

Sto usando mysqlclient con Python 2.7 e MariaDB senza problemi finora.
Dave Everitt,

Risposte:


522

È facile da fare, ma difficile ricordare l'ortografia corretta:

pip install mysqlclient

Se hai bisogno delle versioni 1.2.x (solo Python legacy), usa pip install MySQL-python

Nota: alcune dipendenze potrebbero dover essere presenti quando si esegue il comando sopra. Alcuni consigli su come installarli su varie piattaforme:

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 fallisce, prova

brew install mysql

26
Non devi ricordare il nome intero, puoi usare pip search mysqle trovare quello che ti serve nell'output.
WKPlus,

12
@WKPlus: giusto ... ma l'ho fatto pip search mysqldbe non l'ho trovato. Quindi, +1 a questa risposta.
Dan H,

7
@WKPlus in realtà è praticamente una seccatura trovare la scelta giusta dopo una ricerca pip di mysql
kommradHomer,

9
Devo cercarlo ogni volta, così dannatamente esasperante
sleepycal il

3
@DavidOkwii Quando non sei all'interno di un virtualenv, è richiesto sudo. Potrebbe essere stato un tuo problema.
Marian,

138

A partire da un nuovo sistema Ubuntu 14.04.2, erano necessari questi due comandi:

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

Il solo fatto di "installare pip" da solo non ha funzionato.

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


2
questo ha funzionato, per qualche motivo la semplice installazione di pip non funziona perfettamente su Ubuntu
Dap,

In Ubuntu 14.04, verrà visualizzato l'errore "raise EnvironmentError ("% s not found "% (mysql_config.path,)", e il primo cmd ha risolto il problema, grazie, risparmiami un po 'di tempo
zhihong,

Per correggere l' error: command 'x86_64-linux-gnu-gcc' failed with exit status 1usosudo apt-get install build-essential
FelikZ

Mi chiedo perché sia ​​necessario. Mi viene in mente una cosa. Ho provato questo installando solo e non costruendo. Hai creato alcune delle cose che hai installato anziché installarle?
Ray Kiddy,

Questa dovrebbe essere una risposta accettata ovviamente per Ubuntu.
Roon13,

23

Primo

pip install pymysql

Quindi inserisci il codice seguente in __init__.py( projectname/__init__.py)

import pymysql
pymysql.install_as_MySQLdb()

Il mio ambiente è (python3.5, django1.10) e questa soluzione funziona per me!

Spero che questo ti aiuti!!


3
Caspita, ho resistito per 5 ore cercando di risolvere questo problema senza successo. Questa è l'unica soluzione che ha funzionato su Ubuntu 16.04 / python 3.5 / Django 1.11. Grazie per averlo condiviso.
Paullo,

questo non funziona per me, il mio ambiente è Python 3.7 e Django 2.2. Per favore aiutatemi.
Rajen K Bhagat,

Questo dovrebbe essere lassù. Ho cercato una soluzione per ore. Ho un virtualenv con Python 2.7 in esecuzione django 1.6. Non sono stato in grado di installare MySQL-python né mysqlclient. Qualunque cosa io abbia provato, stavo ottenendo un "errore fatale: mysql.h". Questo ha funzionato.
rolandsaven,

22

Ho avuto problemi con l'installazione della versione a 64 bit di MySQLdb su Windows tramite Pip (fonti di compilazione dei problemi) [versione a 32 bit installata ok]. Gestito per installare il MySQLdb compilato dal file .whl disponibile da http://www.lfd.uci.edu/~gohlke/pythonlibs/

Il file .whl può quindi essere installato tramite pip come documento in https://pip.pypa.io/en/latest/user_guide/#installing-from-wheels

Ad esempio, se si salva in C:/è possibile installare tramite

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

Follow-up: se hai installato una versione a 64 bit di Python, allora vuoi installare la versione AMD a 64 bit di MySQLdb dal link sopra [cioè anche se hai un processore Intel]. Se invece provi ad installare la versione a 32 bit, penso che visualizzi l'errore della ruota non supportato nei commenti seguenti.


Fallimento totale. Ruota non supportata
M Hornbacher

3
Avevo bisogno del client MySQL. pip install mysqlclient-1.3.7-cp27-none-win_amd64.whlfunziona alla grande.
arsenik,

2
Sono andato a http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python per scaricare il whlfile (ho scaricato 64 bit per abbinare la mia installazione Python a 64 bit). File salvato nella c:/directory ed eseguito pip install c:/MySQL_python-1.2.5-cp27-none-win_amd64.whlSi è installato in pochi secondi ed è andato bene. Troppo facile!
curtisp,

Ha funzionato anche per me, poiché l'installazione di pip per nome non andava a buon fine.
Artem Russakovskii,


7

Ho provato tutte le opzioni ma non sono riuscito a farlo funzionare sulla piattaforma Redhat. Ho fatto quanto segue per farlo funzionare: -

yum install MySQL-python -y

Una volta installato il pacchetto è stato in grado di importare il modulo come segue nell'interprete: -

>>> import MySQLdb
>>> 

La domanda era specificamente menzionata pip. Quale distribuzione stai usando? Su Fedora 24, questo funziona per installare il modulo tramite pip: sudo dnf install python python-devel mysql-devel redhat-rpm-config gcc,sudo pip install MySQL-python
Marian

Capisco che la domanda è tramite pip ma personalmente non sono stato in grado di risolverlo utilizzando pip. Quindi ho appena condiviso la mia soluzione che ha risolto il problema per me. Sto usando centos 6.8. L'elenco di pip non mostra nulla di correlato a mysql e quando faccio "pip install MySQL-python" viene visualizzato un errore. Ora, in modo interessante, ho capito che una volta installato tramite yum i: e "yum install MySQL-python" sono in grado di importare MySQLdb. Anche una volta fatto con l'installazione di yum sono stato in grado di installare tramite pip senza errori.
Ashwin,

6

Vai su pycharm quindi vai alle impostazioni predefinite -> pip (doppio clic) - pymsqldb ..--> installa - dopo l'installazione usa in un programma come questo

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 si utilizza Raspberry Pi [Raspbian OS]

All'inizio è necessario il comando install pip

apt-get install python-pip

In questo modo basta installare in sequenza

apt-get install python-dev libmysqlclient-dev

apt-get install python-pip

pip install MySQL-python

Raspberry non è menzionato nell'interrogazione
Héctor Valverde Pareja,


3

Se non riesci a installare mysqlclient puoi anche installare pymysql :

pip install pymysql

Funziona allo stesso modo di MySqldb . Dopodiché usa pymysql ovunque anziché MySQLdb


Questa dovrebbe essere la risposta.
JayJay123,

2

Ho avuto anche lo stesso problema. Segui questi passaggi se sei su Windows. Vai a: 1.Il mio computer 2. Proprietà del sistema 3. Impostazioni di sistema avanzate 4. Nella scheda "Avanzate" fai clic sul pulsante "Variabili d'ambiente" 5. Quindi in Variabili di sistema devi aggiungere / modificare le seguenti variabili: PYTHONPATH e percorso. Ecco un incolla di come appaiono le mie variabili: percorso python:

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

sentiero:

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

Vedi questo link per riferimento


1

La risposta sopra è ottima, ma potrebbero esserci dei problemi quando usiamo pip per installare MySQL-python in Windows

per esempio, ha bisogno di alcuni file associati a Visual Stdio . Una soluzione sta installando VS2008 o 2010 …… Ovviamente, costa troppo.

Un altro modo è la risposta di @ bob90937. Sono qui per fare qualcosa da aggiungere.

con http://www.lfd.uci.edu/~gohlke/pythonlibs , puoi scaricare molti binari di Windows di molti pacchetti di estensione scientifica open source per la distribuzione ufficiale CPython del linguaggio di programmazione Python.

Tornando all'argomento, possiamo scegliere MySQL-python (py2) o Mysqlclient (py3) e usare pip install per installare. ci dà una grande comodità!


1

Per Python3 dovevo fare questo:

python3 -m pip install MySQL


1

su RHEL 7:

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

sudo /bin/pip2 install MySQL-python


1

Se hai Windows installato sul tuo sistema, digita il seguente comando su cmd:

pip install mysql-connector

se il comando sopra non funziona provare a usare:

pip install mysql-connector-python

Ora, se i comandi sopra non riescono a fare il lavoro, prova a usare:

pip install mysql-connector-python-rf

Ecco, sei a posto ora.


1

Molte delle risposte fornite qui sono piuttosto confuse, quindi proverò a dirlo semplicemente. Mi ha aiutato a installare questo

pip install pymysql

e quindi usa il seguente comando nel file python

import pymysql as MySQLdb

In questo modo puoi usare MySQLdb senza problemi.


0

Se pip3 non funziona, puoi provare:

sudo apt install python3-mysqldb

Risposta non molto buona. Supponi che la versione di Python sia 3 e il sistema operativo sia Debian / Ubuntu, ma non lo sai. Attendi fino a quando l'autore non aggiunge ulteriori dettagli.
phd,

0

Il mio 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)

installazione pip mysqlclient-1.3.13-cp37-cp37m-win_amd64.whl

per me va bene.

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

in realtà, segui la risposta di @Nick T non funziona per me, provo a apt-get install python-mysqldblavorare per me

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
>>> 
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.