จะติดตั้งโมดูล Python MySQLdb โดยใช้ pip ได้อย่างไร


310

ฉันจะติดตั้งโมดูลMySQLdbสำหรับ Python โดยใช้ pip ได้อย่างไร


11
หากคุณต้องการใช้สิ่งนี้กับ Python3 (เช่นกับ Django เวอร์ชันใหม่ล่าสุด) คุณจะต้องใช้ mysqlclient เนื่องจาก MysqlDB ไม่รองรับ python3 ดูคำถามนี้
สมิ ธ TD

ฉันใช้ mysqlclient กับ Python 2.7 และ MariaDB โดยไม่มีปัญหา
Dave Everitt

คำตอบ:


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 จริง ๆ แล้วมันเป็นเรื่องยากมากที่จะหาทางเลือกที่ถูกต้องหลังจากการค้นหา pip ของ mysql
kommradHomer

9
ฉันต้อง google นี้ทุกครั้งดังนั้นเจ้ากรรม infurating
sleepycal

3
@DavidOkwii เมื่อคุณไม่ได้อยู่ใน virtualenv ต้องมี sudo นั่นอาจเป็นปัญหาของคุณ
แมเรียน

138

เริ่มต้นจาก Ubuntu 14.04.2 ระบบใหม่จำเป็นต้องใช้สองคำสั่งนี้:

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

เพียงแค่ทำการ "ติดตั้ง pip" ด้วยตัวเองไม่ได้ผล

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


2
อันนี้ใช้งานได้, ด้วยเหตุผลบางประการการติดตั้ง pip อย่างง่าย ๆ ก็ไม่สามารถทำความสะอาดได้บน 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 ขอบคุณที่แบ่งปันสิ่งนี้
Paullo

สิ่งนี้ไม่ได้ผลสำหรับฉันสภาพแวดล้อมของฉันคือ python 3.7 และ django 2.2 กรุณาช่วยฉันออกไป.
Rajen K Bhagat

นี่ควรจะอยู่ตรงนั้น ฉันค้นหาวิธีแก้ปัญหามาหลายชั่วโมงแล้ว ฉันมี virtualenv กับ python 2.7 ที่เรียกใช้ django 1.6 ฉันไม่สามารถติดตั้ง MySQL-python หรือ mysqlclient ได้ ไม่ว่าฉันจะพยายามอะไรฉันก็ได้รับ "ข้อผิดพลาดร้ายแรง: mysql.h" อันนี้ทำอุบาย
rolandsaven

22

ฉันมีปัญหาในการติดตั้ง MySQLdb รุ่น 64 บิตบน Windows ผ่าน Pip (แหล่งรวบรวมปัญหา) [ติดตั้งรุ่น 32 บิต ok] จัดการเพื่อติดตั้ง 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

การติดตามผล: หากคุณติดตั้ง Python เวอร์ชัน 64 บิตแล้วคุณต้องการติดตั้ง MySQLdb รุ่น 64 บิตของ AMDdb จากลิงค์ด้านบน [เช่นแม้ว่าคุณจะมีหน่วยประมวลผล Intel] หากคุณลองและติดตั้งรุ่น 32 บิตแทนฉันคิดว่าคุณได้รับข้อผิดพลาดของวงล้อที่ไม่สนับสนุนในความคิดเห็นด้านล่าง


ยอดรวมล้มเหลว ล้อที่ไม่รองรับ
M Hornbacher

3
ฉันต้องการไคลเอนต์ MySQL pip install mysqlclient-1.3.7-cp27-none-win_amd64.whlทำงานได้ดี
arsenik

2
ไปที่http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-pythonเพื่อดาวน์โหลดwhlไฟล์ (ฉันต้องการ 64 บิตเพื่อให้ตรงกับการติดตั้ง Python 64 บิตของฉัน) ไฟล์ที่บันทึกไว้ในc:/ไดเรกทอรีและวิ่งpip install c:/MySQL_python-1.2.5-cp27-none-win_amd64.whlมันติดตั้งในไม่กี่วินาทีและเป็นเรื่องที่ดีที่จะไป ง่ายเกินไป!
curtisp

ทำงานให้ฉันเช่นกันเช่นเดียวกับการติดตั้ง pip ตามชื่อล้มเหลว
Artem Russakovskii


7

ฉันลองตัวเลือกทั้งหมด แต่ไม่สามารถใช้งานได้บนแพลตฟอร์ม Redhat ฉันทำสิ่งต่อไปนี้เพื่อให้ทำงานได้: -

yum install MySQL-python -y

เมื่อติดตั้งแพคเกจก็สามารถที่จะนำเข้าโมดูลดังต่อไปนี้ในล่าม: -

>>> import MySQLdb
>>> 

pipคำถามที่ได้รับการกล่าวขวัญ specificly คุณใช้การกระจายแบบใด บน Fedora 24 งานนี้เพื่อติดตั้งโมดูลผ่าน pip: sudo dnf install python python-devel mysql-devel redhat-rpm-config gcc,sudo pip install MySQL-python
แมเรียน

ฉันเข้าใจว่าคำถามผ่านทาง pip แต่โดยส่วนตัวแล้วฉันไม่สามารถแก้ไขได้ด้วยการใช้ pip ดังนั้นฉันเพิ่งแชร์วิธีแก้ปัญหาของฉันซึ่งแก้ไขปัญหาให้ฉัน ฉันใช้ centos 6.8 รายการ pip ไม่แสดงอะไรที่เกี่ยวข้องกับ mysql และเมื่อฉัน "pip ติดตั้ง MySQL-python" มันแสดงข้อผิดพลาด ตอนนี้น่าสนใจฉันคิดออกว่าเมื่อเราติดตั้งผ่าน yum i: e "yum ติดตั้ง MySQL-python" ฉันสามารถนำเข้า MySQLdb ฉันสามารถติดตั้งผ่าน pip ได้โดยไม่มีข้อผิดพลาด
Ashwin

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

ราสเบอร์รี่ไม่ได้ถูกกล่าวถึงในคำถาม
Héctor Valverde Pareja


3

หากคุณไม่สามารถติดตั้งmysqlclientคุณยังสามารถติดตั้งpymysql :

pip install pymysql

นี้ทำงานเช่นเดียวกับMySQLdb หลังจากนั้นใช้ pymysql ทั่วแทนที่จะเป็น MySQLdb


นี่ควรเป็นคำตอบ
JayJay123

2

ฉันมีปัญหาเดียวกันด้วยทำตามขั้นตอนเหล่านี้หากคุณใช้ Windows ไปที่: 1. คอมพิวเตอร์ของฉัน 2. คุณสมบัติของระบบ 3. การตั้งค่าระบบขั้นสูง 4. ภายใต้แท็บ "ขั้นสูง" คลิกปุ่มที่ระบุว่า "ตัวแปรสภาพแวดล้อม" 5. จากนั้นภายใต้ตัวแปรระบบคุณต้องเพิ่ม / เปลี่ยนตัวแปรต่อไปนี้: PYTHONPATH และเส้นทาง นี่คือสิ่งที่ตัวแปรของฉันดูเหมือน: เส้นทางหลาม:

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 . One solution กำลังติดตั้ง VS2008 หรือ 2010 ……. เห็นได้ชัดว่ามันมีค่าใช้จ่ายมากเกินไป

อีกวิธีคือคำตอบของ @ bob90937 ฉันอยู่ที่นี่เพื่อทำสิ่งที่จะเพิ่ม

ด้วยhttp://www.lfd.uci.edu/~gohlke/pythonlibsคุณสามารถดาวน์โหลดไบนารี Windows จำนวนมากของแพ็คเกจส่วนขยายโอเพ่นซอร์สทางวิทยาศาสตร์จำนวนมากสำหรับการเผยแพร่ CPython อย่างเป็นทางการของภาษาโปรแกรม Python

กลับไปที่หัวข้อเราสามารถเลือกMySQL-python (py2)หรือMysqlclient (py3) และใช้pip install เพื่อติดตั้ง มันทำให้เราสะดวกสบายมาก!





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 แต่คุณไม่รู้ โปรดรอจนกว่าผู้เขียนจะเพิ่มรายละเอียดเพิ่มเติม
phd

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
>>> 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.