Làm cách nào để cài đặt mô-đun Python MySQLdb bằng pip?


310

Làm cách nào tôi có thể cài đặt mô-đun MySQLdb cho Python bằng pip?


11
Nếu bạn đang tìm cách sử dụng cái này với Python3 (ví dụ, với phiên bản mới nhất của Django), bạn sẽ cần mysqlclient vì MysqlDB không hỗ trợ python3. Xem câu hỏi này
TD Smith

Tôi đang sử dụng mysqlclient với Python 2.7 và MariaDB mà không có vấn đề gì cho đến nay.
Dave Everitt

Câu trả lời:


522

Thật dễ để làm, nhưng khó nhớ chính tả:

pip install mysqlclient

Nếu bạn cần phiên bản 1.2.x (chỉ dành cho Python kế thừa), hãy sử dụng pip install MySQL-python

Lưu ý: Một số phụ thuộc có thể phải được đặt đúng chỗ khi chạy lệnh trên. Một số gợi ý về cách cài đặt chúng trên các nền tảng khác nhau:

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

hệ điều hành Mac

brew install mysql-connector-c

nếu thất bại, hãy thử

brew install mysql

26
Bạn không cần phải nhớ toàn bộ tên, bạn có thể sử dụng pip search mysqlvà tìm tên bạn cần trong đầu ra.
WKPlus

12
@WKPlus: đúng ... nhưng tôi đã làm pip search mysqldbvà không tìm thấy nó. Vì vậy, tôi +1 câu trả lời này.
Dân H

7
@WKPlus thực sự khá rắc rối khi tìm ra sự lựa chọn đúng đắn sau khi tìm kiếm pip của mysql
kommradHomer

9
Tôi phải google cái này mỗi lần, thật là ngớ ngẩn
cơn buồn ngủ

3
@DavidOkwii Khi bạn không ở trong virtualenv, sudo là bắt buộc. Đó có thể là vấn đề của bạn.
Mary

138

Bắt đầu từ một hệ thống Ubuntu 14.04.2 mới, hai lệnh này là cần thiết:

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

Chỉ làm "cài đặt pip" tự nó không hoạt động.

Từ http://codeinthehole.com/wr/how-to-set-up-mysql-for-python-on-ub Ubuntu /


2
cái này hoạt động được, vì một số lý do, cài đặt pip đơn giản không hoạt động sạch trên Ubuntu
Dap

Trong Ubuntu 14.04, sẽ gặp lỗi "nâng cao môi trườngError (" không tìm thấy% s "% (mysql_config.path,)" và cmd đầu tiên đã khắc phục sự cố, cảm ơn, hãy tiết kiệm cho tôi một chút thời gian
zhihong

Để khắc phục error: command 'x86_64-linux-gnu-gcc' failed with exit status 1việc sử dụngsudo apt-get install build-essential
FelikZ 20/07/2015

Tôi tự hỏi tại sao điều này là cần thiết. Một điều xảy ra với tôi. Tôi đã thử nghiệm điều này bằng cách chỉ cài đặt và không xây dựng. Bạn đã xây dựng bất kỳ thứ gì bạn đã cài đặt thay vì chỉ cài đặt chúng?
Ray Kiddy

Điều này nên được chấp nhận câu trả lời tất nhiên cho Ubuntu.
Roon13

23

Đầu tiên

pip install pymysql

Sau đó đặt mã dưới đây vào __init__.py( projectname/__init__.py)

import pymysql
pymysql.install_as_MySQLdb()

Môi trường của tôi là (python3.5, django1.10) và giải pháp này hiệu quả với tôi!

Hi vọng điêu nay co ich!!


3
Woow, tôi đã eo hơn 5 giờ cố gắng khắc phục điều này mà không thành công. Đây là giải pháp duy nhất hoạt động trên Ubuntu 16.04 / python 3.5 / Django 1.11. Cảm ơn đã chia sẻ điều này.
Paullo

Điều này không phù hợp với tôi, Môi trường của tôi là python 3.7 và django 2.2. Hãy giúp tôi ra.
Rajen K Bhagat

Điều này nên được lên đó. Tôi đã tìm kiếm một giải pháp trong nhiều giờ. Tôi có một virtualenv với python 2.7 đang chạy django 1.6. Tôi không thể cài đặt MySQL-python hay mysqlclient. Không có vấn đề gì tôi đã cố gắng, tôi đã nhận được một "lỗi nghiêm trọng: mysql.h". Điều này đã làm một mẹo.
rolandsaven

22

Tôi gặp sự cố khi cài đặt phiên bản MySQLdb 64 bit trên Windows thông qua Pip (nguồn biên dịch sự cố) [Phiên bản 32 bit được cài đặt ok]. Được quản lý để cài đặt MySQLdb đã biên dịch từ tệp .whl có sẵn từ http://www.lfd.uci.edu/~gohlke/pythonlibs/

Sau đó, tệp .whl có thể được cài đặt qua pip dưới dạng tài liệu trong https://pip.pypa.io/en/latest/user_guide/#installing-from-wheels

Ví dụ: nếu bạn lưu trong C:/, bạn có thể cài đặt qua

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

Theo dõi: nếu bạn đã cài đặt phiên bản Python 64 bit, thì bạn muốn cài đặt phiên bản AMD 64 bit của MySQLdb từ liên kết trên [tức là ngay cả khi bạn có bộ xử lý Intel]. Thay vào đó, nếu bạn thử và cài đặt phiên bản 32 bit, tôi nghĩ bạn sẽ gặp lỗi bánh xe không được hỗ trợ trong các bình luận bên dưới.


Tổng số thất bại. Bánh xe không được hỗ trợ
M Hornbacher

3
Tôi cần máy khách MySQL. pip install mysqlclient-1.3.7-cp27-none-win_amd64.whllàm việc tuyệt vời
arsenik

2
Đã đi đến http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python để tải xuống whltệp (Tôi đã 64 bit để phù hợp với cài đặt Python 64 bit của tôi). Lưu tập tin vào c:/thư mục và chạy pip install c:/MySQL_python-1.2.5-cp27-none-win_amd64.whlNó được cài đặt trong vài giây và rất tốt để đi. Quá dễ dàng!
curtisp

Làm việc cho tôi là tốt, vì cài đặt pip theo tên đã thất bại.
Artem Russakovskii


7

Tôi đã thử tất cả các tùy chọn nhưng không thể làm cho nó hoạt động trên nền tảng Redhat. Tôi đã làm như sau để làm cho nó hoạt động: -

yum install MySQL-python -y

Khi gói đã được cài đặt, có thể nhập mô-đun như sau trong trình thông dịch: -

>>> import MySQLdb
>>> 

Câu hỏi được đề cập cụ thể pip. Bạn đang sử dụng bản phân phối nào? Trên Fedora 24, điều này hoạt động để cài đặt mô-đun qua pip : sudo dnf install python python-devel mysql-devel redhat-rpm-config gcc,sudo pip install MySQL-python
Marian

Tôi hiểu câu hỏi là thông qua pip nhưng cá nhân tôi không thể giải quyết nó bằng cách sử dụng pip. Do đó tôi chỉ chia sẻ cách giải quyết của mình đã khắc phục sự cố cho tôi. Tôi đang sử dụng centos 6.8. danh sách pip không hiển thị bất cứ điều gì liên quan đến mysql và khi tôi thực hiện "pip cài đặt MySQL-python" thì nó đã báo lỗi. Bây giờ thật thú vị tôi đã tìm ra rằng một khi chúng ta cài đặt qua yum i: e "yum install MySQL-python" Tôi có thể nhập MySQLdb. Ngoài ra, một khi đã thực hiện cài đặt yum, tôi có thể cài đặt qua pip mà không gặp bất kỳ lỗi nào.
Ashwin

6

Đi tới pycharm, sau đó chuyển đến cài đặt mặc định -> pip (nhấp đúp chuột) - pymsqldb ..--> cài đặt - sau khi cài đặt sử dụng trong một chương trình như thế này

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

Nếu bạn đang sử dụng Raspberry Pi [Hệ điều hành Raspbian]

Lúc đầu cần phải cài đặt lệnh pip

apt-get install python-pip

Vì vậy, chỉ cần cài đặt liên tục

apt-get install python-dev libmysqlclient-dev

apt-get install python-pip

pip install MySQL-python

Raspberry không được đề cập trong câu hỏi
Héctor Valverde Pareja


3

Nếu bạn không thể cài đặt mysqlclient bạn cũng có thể cài đặt pymysql :

pip install pymysql

Điều này hoạt động tương tự như MySqldb . Sau đó, sử dụng pymysql trên tất cả thay vì MySQLdb


Đây nên là câu trả lời.
JayJay123

2

Tôi cũng gặp vấn đề tương tự. Thực hiện theo các bước này nếu bạn ở trên Windows. Truy cập: 1. Máy tính của tôi 2. Thuộc tính hệ thống 3. Cài đặt hệ thống nâng cao 4. Trong tab "Nâng cao", nhấp vào nút "Biến môi trường" 5. Sau đó, trong Biến hệ thống, bạn phải thêm / thay đổi các biến sau: PYTHONPATH và con đường. Đây là một dán của các biến của tôi trông như thế nào: đường dẫn python:

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

con đường:

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

Xem liên kết này để tham khảo


1

Câu trả lời trên rất hay, nhưng có thể có một số vấn đề khi chúng ta sử dụng pip để cài đặt MySQL-python trong Windows

ví dụ: Nó cần một số tệp được liên kết với giải pháp Visual Stdio .One đang cài đặt VS2008 hoặc 2010, Rõ ràng, nó có giá quá cao.

Một cách khác là câu trả lời của @ bob90937. Tôi ở đây để làm một cái gì đó để thêm.

với http://www.lfd.uci.edu/~gohlke/pythonlibs , bạn có thể tải xuống nhiều tệp nhị phân Windows của nhiều gói mở rộng nguồn mở khoa học để phân phối CPython chính thức của ngôn ngữ lập trình Python.

Quay lại chủ đề, chúng ta có thể chọn MySQL-python (py2) hoặc Mysqlclient (py3) và sử dụng cài đặt pip để cài đặt. nó mang lại cho chúng tôi sự tiện lợi tuyệt vời!


1

Đối với Python3 tôi cần phải làm điều này:

python3 -m pip install MySQL


1

trên RHEL 7:

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

sudo /bin/pip2 install MySQL-python


1

Nếu bạn đã cài đặt Windows trên hệ thống của mình thì hãy gõ lệnh sau trên cmd:

pip install mysql-connector

nếu lệnh trên không hoạt động, hãy thử sử dụng:

pip install mysql-connector-python

Bây giờ, nếu các lệnh trên không hoàn thành công việc, hãy thử sử dụng:

pip install mysql-connector-python-rf

Đó là bạn tốt để đi bây giờ.


1

Nhiều câu trả lời ở đây khá khó hiểu nên tôi sẽ cố gắng đặt nó đơn giản. Nó giúp tôi cài đặt cái này

pip install pymysql

và sau đó sử dụng lệnh sau trong tệp python

import pymysql as MySQLdb

Bằng cách này bạn có thể sử dụng MySQLdb mà không gặp vấn đề gì.


0

Nếu pip3 không hoạt động, bạn có thể thử:

sudo apt install python3-mysqldb

Câu trả lời không hay lắm. Bạn cho rằng phiên bản Python là 3 và HĐH là Debian / Ubuntu, nhưng bạn không biết điều đó. Xin vui lòng chờ cho đến khi tác giả thêm chi tiết.
phd

0

Môi trường của tôi là:

  • 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 cài đặt mysqlclient-1.3.13-cp37-cp37m-win_amd64.whl

làm việc cho tôi

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

Thật ra, hãy làm theo câu trả lời của @Nick T không hiệu quả với tôi, tôi thử apt-get install python-mysqldblàm việc cho tôi

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
>>> 
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.