Як встановити модуль Python MySQLdb за допомогою pip?


310

Як я можу встановити модуль MySQLdb для Python за допомогою pip?


11
Якщо ви хочете використовувати це з Python3 (наприклад, з новітньою версією Django), вам знадобиться mysqlclient, оскільки MysqlDB не підтримує python3. Дивіться це запитання
TD Smith

Я використовую mysqlclient з Python 2.7 та MariaDB, поки немає проблем.
Дейв Еверітт

Відповіді:


522

Це легко зробити, але важко запам'ятати правильний написання:

pip install mysqlclient

Якщо вам потрібні версії 1.2.x (лише застарілий Python), використовуйте pip install MySQL-python

Примітка. Деякі залежності, можливо, повинні бути встановлені під час виконання вищевказаної команди. Деякі підказки щодо того, як їх встановити на різних платформах:

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

якщо це не вдається, спробуйте

brew install mysql

26
Вам не потрібно запам’ятовувати все ім’я, ви можете використовувати pip search mysqlта знаходити те, що вам потрібно у висновку.
WKPlus

12
@WKPlus: правильно ... але я pip search mysqldbцього не знайшов. Таким чином, я поставив +1 цій відповіді.
Dan H

7
@WKPlus насправді це справді справжні клопоти, щоб дізнатися правильний вибір після піп-пошуку mysql
kommradHomer

9
Мені доводиться гуляти це щоразу, так чортово нагнітаючи
сонливий

3
@DavidOkwii Якщо ви не знаходитесь у virtualenv, потрібне судо. Це могло бути вашою проблемою.
Маріан

138

Починаючи з нової системи Ubuntu 14.04.2, ці дві команди були потрібні:

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

Просто зробити "встановлення піп" самостійно не вийшло.

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


2
цей працював, чомусь проста програма встановлення не працює в ubuntu
Dap

У ubuntu 14.04 з'явиться помилка "підвищити EnvironmentError ("% s не знайдено "% (mysql_config.path,)", і перший cmd виправив проблему, дякую, врятуй мене трохи часу
zhihong

Щоб виправити error: command 'x86_64-linux-gnu-gcc' failed with exit status 1використанняsudo apt-get install build-essential
FelikZ

Цікаво, для чого це потрібно. У мене одна справа. Я перевірив це, встановивши лише, а не будуючи. Ви будували будь-які встановлені вами речі, а не просто встановлювали їх?
Ray Kiddy

Це має бути прийнято відповіддю, звичайно, для Ubuntu.
Roon13

23

Спочатку

pip install pymysql

Потім введіть код нижче в __init__.py( projectname/__init__.py)

import pymysql
pymysql.install_as_MySQLdb()

Моє середовище (python3.5, django1.10), і це рішення працює для мене!

Сподіваюся, це допомагає !!


3
Ву, я вже 5 годин намагаюся виправити це без успіху. Це єдине рішення, яке працювало на Ubuntu 16.04 / python 3.5 / Django 1.11. Дякуємо, що поділилися цим.
Полло

це не працює для мене, моє середовище - python 3.7 та django 2.2. Будь ласка, допоможіть мені.
Rajen K Bhagat

Це повинно бути там. Я годинами шукав рішення. У мене є virtualenv з python 2.7, що працює django 1.6. Мені не вдалося встановити MySQL-python ні mysqlclient. Незалежно від того, що я намагався, я отримував "фатальну помилку: mysql.h". Цей зробив трюк.
rolandsaven

22

У мене виникли проблеми з встановленням 64-розрядної версії MySQLdb у Windows через Pip (проблема зі збиранням джерел) [32-бітна версія встановлена ​​нормально]. Вдалося встановити скомпільований MySQLdb з .whl-файлу, доступного на веб-сайті http://www.lfd.uci.edu/~gohlke/pythonlibs/

Файл .whl може бути встановлений через pip як документ на https://pip.pypa.io/en/latest/user_guide/#installing-from-wheels

Наприклад, якщо ви зберігаєте в C:/програмі, яку ви можете встановити через

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

Наступні дії: якщо у вас встановлена ​​64-бітна версія Python, ви хочете встановити 64-бітну версію AMD MySQLdb за посиланням вище [тобто навіть якщо у вас процесор Intel]. Якщо ви замість цього спробуйте встановити 32-бітну версію, я думаю, що ви отримаєте непідтримувану помилку колеса в коментарях нижче.


Загальний збій. Непідтримуване колесо
M Hornbacher

3
Мені потрібен клієнт MySQL. pip install mysqlclient-1.3.7-cp27-none-win_amd64.whlпрацює чудово.
арсенік

2
Пішов на сторінку http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python для завантаження whlфайлу (я мав би 64 біт, щоб він відповідав моїй 64-бітній установці Python). Зберегли файл у c:/каталог та запустили. pip install c:/MySQL_python-1.2.5-cp27-none-win_amd64.whlВін встановився за лічені секунди і було добре піти. Надто легко!
curtisp

Працював і для мене, тому що встановити Pip за назвою не вдалося.
Артем Русаковський


7

Я спробував увесь варіант, але не зміг змусити його працювати на платформі Redhat. Я зробив наступне, щоб він працював: -

yum install MySQL-python -y

Після встановлення пакета вдалося імпортувати модуль у інтерпретаторі наступним чином:

>>> import MySQLdb
>>> 

Питання конкретно згадувалося pip. Який дистрибутив ви використовуєте? На Fedora 24, це працює , щоб встановити модуль через піп: sudo dnf install python python-devel mysql-devel redhat-rpm-config gcc,sudo pip install MySQL-python
Marian

Я розумію, що це питання через pip, але я особисто не зміг його вирішити, використовуючи pip. Тому я просто поділився своїм вирішенням, яке вирішило проблему для мене. Я використовую центос 6.8. список піп не показує нічого, що стосується mysql, і коли я роблю "pip install MySQL-python", він видав помилку. Тепер цікаво, я зрозумів, що після встановлення через yum i: e "yum install MySQL-python" я можу імпортувати MySQLdb. Також після встановлення yum я зміг встановити через pip без будь-яких помилок.
Ешвін

6

Перейдіть до pycharm, потім перейдіть до налаштування за замовчуванням -> pip (подвійне клацання) - pymsqldb ..--> встановити - після встановлення використовувати в такій програмі

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

Якщо ви використовуєте Raspberry Pi [Raspbian OS]

Потрібно спочатку встановити команду pip

apt-get install python-pip

Так що просто встановити Послідовно

apt-get install python-dev libmysqlclient-dev

apt-get install python-pip

pip install MySQL-python

Малину в питанні не згадують
Гектор Вальверде Пареджа


3

Якщо ви не можете встановити mysqlclient, ви також можете встановити pymysql :

pip install pymysql

Це працює так само, як MySqldb . Після цього використовуйте pymysql всюди замість MySQLdb


Це має бути відповіддю.
JayJay123

2

У мене була така ж проблема. Виконайте ці дії, якщо ви працюєте в Windows. Перейдіть до: 1.Мой комп’ютер 2.Властивості системи 3.Разширення системних налаштувань 4. На вкладці "Додатково" натисніть кнопку з написом "Змінні середовища" 5. Потім у розділі Системні змінні вам потрібно додати / змінити такі змінні: PYTHONPATH і Шлях. Ось вставка того, як виглядають мої змінні: python path:

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

шлях:

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

Дивіться це посилання для довідок


1

Вищеназвана відповідь чудова, але можуть бути деякі проблеми, коли ми використовуємо pip для установки MySQL-python у Windows

наприклад, йому потрібні деякі файли, пов’язані з Visual Stdio рішення встановлює VS2008 або 2010 …… Очевидно, що це коштувало занадто дорого.

Інший спосіб - відповідь @ bob90937. Я тут, щоб зробити щось додати.

за допомогою http://www.lfd.uci.edu/~gohlke/pythonlibs , ви можете завантажити багато бінарних файлів Windows багатьох наукових пакетів розширень з відкритим кодом для офіційного розподілу CPython мови програмування Python.

Повертаючись до теми, ми можемо вибрати MySQL-python (py2) або Mysqlclient (py3) і використовувати для встановлення pip . це дає нам велику зручність!





1

Якщо у вас в системі встановлена ​​Windows, тоді введіть таку команду на cmd:

pip install mysql-connector

якщо вищевказана команда не працює, спробуйте скористатися:

pip install mysql-connector-python

Тепер, якщо вищезазначені команди не виконали роботу, спробуйте скористатися:

pip install mysql-connector-python-rf

Ось це вам добре зараз піти.


1

Багато з наведених відповідей тут досить заплутані, тому я спробую це просто сказати. Це допомогло мені встановити це

pip install pymysql

а потім використовуйте таку команду у файлі python

import pymysql as MySQLdb

Таким чином можна без проблем використовувати MySQLdb.


0

Якщо pip3 не працює, ви можете спробувати:

sudo apt install python3-mysqldb

Не дуже гарна відповідь. Ви припускаєте, що версія Python 3 та ОС - Debian / Ubuntu, але ви цього не знаєте. Зачекайте, поки автор не додасть більше деталей.
пд

0

Моє середовище:

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

pip встановити mysqlclient-1.3.13-cp37-cp37m-win_amd64.whl

працює для мене.

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

насправді слідкуйте за відповіддю @Nick T для мене не працює, я намагаюся apt-get install python-mysqldbпрацювати для мене

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
>>> 
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.