如何使用pip安装Python的MySQLdb模块?

344

我该如何使用pip为Python安装MySQLdb模块?


12
如果你想在Python3中使用它(例如,与最新版本的Django一起使用),你需要使用mysqlclient,因为MysqlDB不支持Python3。请参见此问题 - T.D. Smith
我目前在使用Python 2.7的mysqlclient和MariaDB,没有遇到任何问题。 - Dave Everitt
21个回答

582

做起来很容易,但记住正确的拼写却很难:

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:


Fedora 24:
sudo dnf install python python-devel mysql-devel redhat-rpm-config gcc

Mac OS

brew install mysql-connector-c

如果失败了,请尝试

brew install mysql

27
无需记住完整名称,您可以使用“pip search mysql”在输出中找到所需的内容。请注意不要改变原有意思,使翻译更易懂。 - WKPlus
12
@WKPlus说:对的...但是我用pip search mysqldb搜索并没有找到它。因此,我赞同这个答案。 - Dan H
7
@WKPlus 实际上,在使用 pip 搜索 mysql 后找到正确的选项是相当麻烦的。 - kommradHomer
13
我每次都要谷歌一下,真是让人恼火。 - SleepyCal
3
当你没有使用虚拟环境时,需要使用sudo命令。这可能是你遇到问题的原因。 - Marian
显示剩余8条评论

142

2
这个可以工作,但奇怪的是,在Ubuntu上简单的pip安装不干净。 - Dap
在Ubuntu 14.04中,会出现错误“raise EnvironmentError("%s not found" % (mysql_config.path,)",第一个命令修复了问题,谢谢,节省了我的时间。 - zhihong
要解决 error: command 'x86_64-linux-gnu-gcc' failed with exit status 1 的问题,请使用 sudo apt-get install build-essential - FelikZ
我想知道为什么需要这个。有一件事让我想到了。我只安装了测试,没有进行构建。你是否在安装这些东西时进行了构建,而不仅仅是安装它们? - Ray Kiddy
这当然应该是Ubuntu的接受答案。 - Roon13
+1 这应该是适用于Ubuntu系统的答案,它在我的Ubuntu 18.04.4上有效。解决了我的“ImportError: No module named MySQLdb”和“Could not find a version that satisfies the requirement MySQLdb (from versions:) No matching distribution found for MySQLdb”错误消息。 - Roly Poly

34

首先

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
这应该是最好的解决方案。我已经浏览了几个小时,寻找解决方法。我有一个虚拟环境,其中运行着Python 2.7和Django 1.6。我无法安装MySQL-python或mysqlclient。无论我尝试什么,都会出现“致命错误:mysql.h”的错误。这个方法解决了我的问题。 - rolandsaven

23

我在Windows上通过Pip安装64位版本的MySQLdb时遇到了问题(编译源代码时出现问题)[32位版本安装正常]。成功地从http://www.lfd.uci.edu/~gohlke/pythonlibs/提供的.whl文件中安装了已编译的MySQLdb。

备用链接:https://archive.linux.duke.edu/pypi/simple/mysqlclient/

然后可以按照https://pip.pypa.io/en/latest/user_guide/#installing-from-wheels中的文档使用pip安装.whl文件。

例如,如果您将其保存在C:/中,则可以通过以下方式进行安装:

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

跟进:如果您安装了64位版本的Python,则需要从上面的链接安装64位AMD版本的MySQLdb [即使您有Intel处理器]。如果您尝试安装32位版本,则可能会在下面的评论中收到不支持的wheel错误。

完全失败。不支持的轮子。 - Menachem 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位以匹配我的64位Python安装)。将文件保存到c:/目录并运行pip install c:/MySQL_python-1.2.5-cp27-none-win_amd64.whl。它在几秒钟内安装完成,一切就绪。太简单了! - curtisp
对我也起作用了,因为按名称安装 pip 失败了。 - Artem Russakovskii
www.lfd.uci.edu的链接已经失效了,这个链接似乎是一个很好的替代方案... https://archive.linux.duke.edu/pypi/simple/mysqlclient/ - panofish

20

这个方法对我有效:

pip install mysqlclient

这适用于 Python 3.x


3
这是我在Python 3.5 / Django 1.11上使用的第一个成功解决方案。 - Braden Holt
1
你可能会遇到缺少mysql_config文件的问题。请参考https://dev59.com/Qms05IYBdhLWcg3wD9wB - zwep

9

打开 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()

对我而言,MySQLdb 无法工作是因为虚拟环境引用了错误的库。使用 import pymysql as MySQLdb 解决了这个问题。 - darth vader

9

这里给出的很多答案都相当令人困惑,所以我将尝试简单地表述一下。对我有帮助的是安装了这个。

pip install pymysql

然后在 Python 文件中使用以下命令

import pymysql as MySQLdb

这样你就可以毫无问题地使用MySQLdb。


1
你的回答没有意义,因为那是两个不同的模型。 - urek mazino

8

我尝试了所有选项,但无法在Redhat平台上使其工作。 我进行了以下操作以使其正常运行:-

yum install MySQL-python -y

一旦安装了软件包,在解释器中可以按以下方式导入模块:

>>> import MySQLdb
>>> 

这个问题特别提到了 pip。你使用的是哪个发行版?在 Fedora 24 上,可以通过以下方式使用 pip 安装模块:sudo dnf install python python-devel mysql-devel redhat-rpm-config gcc, sudo pip install MySQL-python - Marian
我理解问题是通过pip,但我个人无法通过使用pip解决它。因此,我只是分享了我的解决方法,这对我来说解决了问题。我正在使用centos 6.8。 pip列表不显示与mysql相关的任何内容,当我执行“pip install MySQL-python”时,它会抛出错误。有趣的是,我发现一旦我们通过yum安装即“yum install MySQL-python”,我就能够导入MySQLdb。 而且一旦完成yum安装,我就能够通过pip安装而没有任何错误。 - Ashwin

4
如果无法安装 mysqlclient,您也可以安装 pymysqlpip install pymysql 这与 MySqldb 相同。安装后,请使用 pymysql 替代 MySQLdb。

1
这应该是答案。 - JayJay123

3

如果您使用树莓派[Raspbian操作系统]

首先需要安装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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接