如何在 Windows 上的 Python 3 中连接到 MySQL?

Posted

技术标签:

【中文标题】如何在 Windows 上的 Python 3 中连接到 MySQL?【英文标题】:How can I connect to MySQL in Python 3 on Windows? 【发布时间】:2011-06-25 00:10:53 【问题描述】:

我在 Windows 上使用 ActiveState Python 3 并想连接到我的 mysql 数据库。 我听说mysqldb 是要使用的模块。 我找不到 Python 3 的 mysqldb

mysqldb 的二进制文件是否有可用的存储库? 如何在 Windows 上使用 Python 3 连接到 MySQL?

【问题讨论】:

感谢 casevh 提供非官方二进制文件的链接,但我太不耐烦了,看来大众仍在使用 python2 ...所以我安装了 python 2.7 并从codegood.com/archives/129安装了 MySQLdb@ MySQL-db lib for Python 3.0 ?的可能重复 每次我输入 pip,我的胃都会翻腾。 7 年了。 【参考方案1】:

目前有几个将 Python 3 与 mysql 结合使用的选项:

https://pypi.python.org/pypi/mysql-connector-python

Oracle 官方支持 纯蟒蛇 有点慢 与 MySQLdb 不兼容

https://pypi.python.org/pypi/pymysql

纯蟒蛇 比 mysql-connector 快 几乎完全兼容MySQLdb,调用pymysql.install_as_MySQLdb()

https://pypi.python.org/pypi/cymysql

带有可选 C 加速的 pymysql 分支

https://pypi.python.org/pypi/mysqlclient

Django 推荐的库。 原始 MySQLdb 的友好分支,希望有一天能合并回来 最快的实现,因为它是基于 C 的。 与 MySQLdb 最兼容,因为它是一个 fork Debian 和 Ubuntu 使用它来提供python-mysqldbpython3-mysqldb 软件包。

这里的基准:https://github.com/methane/mysql-driver-benchmarks

【讨论】:

pip install mysqlclient 刚刚为我工作!感谢您提供完整的选项列表。 mysqlclient 刚刚为我的 Python3.4+Django+Passenger+Dreamhost 安装工作。 Ubuntu 有 mysqlclient Debian 没有 看起来 mysqlclient 在 debian testing 中为 python3-mysqldb,但它不在 stable 中。所以它会在下一个版本中。 要在 ubuntu 上安装 mysql 连接器,您可以使用像 sudo apt-get install python3-mysql.connector 这样的 apt 【参考方案2】:

您或许应该改用 pymysql - Pure Python MySQL 客户端。 它适用于 Python 3.x,并且没有任何依赖项。

这个纯 Python MySQL 客户端通过二进制客户端/服务器协议直接与服务器对话,为 MySQL 数据库提供 DB-API。

例子:

import pymysql
conn = pymysql.connect(host='127.0.0.1', unix_socket='/tmp/mysql.sock', user='root', passwd=None, db='mysql')
cur = conn.cursor()
cur.execute("SELECT Host,User FROM user")
for r in cur:
    print(r)
cur.close()
conn.close()

【讨论】:

不幸的是,它是一个零文档库,碰巧只是不工作 @Lohoris:我怎么用起来没问题? 我无法使用 Python 3.x 在 Windows 7 上安装它。有人知道怎么做吗? Python 版本 3.3.1 在这里,它没有安装。抱怨缺少名为 constants 的模块。 @Pius 因为你做错了。刚刚检查,它的工作原理。【参考方案3】:

如果你想先使用 MySQLdb,你必须在你的电脑上通过输入 windows 的 cmd 来安装 pymysql

    pip install pymysql

然后在 python shell 中,输入

    import pymysql
    pymysql.install_as_MySQLdb()
    import MySQLdb
    db = MySQLdb.connect("localhost" , "root" , "password")

这将建立连接。

【讨论】:

【参考方案4】:

我也尝试过使用 pymysql(在我的 Win7 x64 机器上,Python 3.3),但运气不佳。我下载了 .tar.gz,解压,运行“setup.py install”,一切似乎都很好。直到我尝试连接到数据库,并得到“KeyError [56]”。我无法在任何地方找到记录的错误。

所以我放弃了pymysql,我选择了Oracle MySQL connector。

它以安装包的形式提供,开箱即用。而且它似乎也有据可查。

【讨论】:

我使用的是 MySQLdb,效果很好,但很明显,随着时间的推移,我希望这会成为事实上的标准。【参考方案5】:

未经测试,但有一些可用的二进制文件:

Unofficial Windows Binaries

【讨论】:

【参考方案6】:

总结

Mysqlclient 是最好的选择(恕我直言),因为它可以完美地与 Python 3+,遵循预期的约定(不像 mysql 连接器),使用对象名称 mysqldb 可以方便地移植 现有软件,并被 Django 用于 Python 3 构建

是否有可用的存储库,其中存在 mysqldb 的二进制文件?

是的。 mysqlclient 允许您使用 mysqldb 函数。尽管, 请记住,这不是 mysqldb 的直接端口,而是 mysqlclient 的构建

如何在 Windows 上使用 Python 3 连接到 MySQL?

pip 安装 mysqlclient

例子

#!/Python36/python
#Please change above path to suit your platform.  Am running it on Windows
import MySQLdb
db = MySQLdb.connect(user="my-username",passwd="my-password",host="localhost",db="my-databasename")
cursor = db.cursor()
cursor.execute("SELECT * from my-table-name")
data=cursor.fetchall()
for row in data :
    print (row)
db.close()

我找不到 Python 3 的 mysqldb。

mysqldb还没有移植

【讨论】:

【参考方案7】:

PyMySQL 也提供了类似 MySQLDb 的接口。您可以尝试初始化:

import pymysql
pymysql.install_as_MySQLdb()

在 github 上还有一个用于 python3 的 mysql-python 端口。

https://github.com/davispuh/MySQL-for-Python-3

【讨论】:

【参考方案8】:

Oracle/MySQL 提供官方的纯 Python DBAPI 驱动:http://dev.mysql.com/downloads/connector/python/

我在 Python 3.3 中使用过它,发现它运行良好。也适用于 SQLAlchemy。

另请参阅此问题:Is it still too early to hop aboard the Python 3 train?

【讨论】:

【参考方案9】:

在我的 mac os maverick 上我试试这个:

在终端类型中:

1)mkdir -p ~/bin ~/tmp ~/lib/python3.3 ~/src 2)导出 TMPDIR=~/tmp 3)wget -O ~/bin/2to3 4)http://hg.python.org/cpython/raw-file/60c831305e73/Tools/scripts/2to3 5)chmod 700 ~/bin/2to3 6)cd ~/src 7)git clone https://github.com/petehunt/PyMySQL.git 8)cd PyMySQL / 9)python3.3 setup.py install --install-lib=$HOME/lib/python3.3 --install-scripts=$HOME/bin

之后,进入python3解释器并输入:

    导入 pymysql。 如果没有错误,您的安装就可以了。为了验证,请编写一个脚本以使用此表单连接到 mysql:

    # MySQL 连接的简单脚本 import pymysql db = pymysql.connect(host="localhost", user="root", passwd="*", db="biblioteca") #没错,这是 我的 db 的信息 # 关闭连接 db.close ()*

为其命名(例如“con.py”)并将其保存在桌面上。在终端中输入“cd desktop”,然后 $python con.py 如果没有错误,您已连接到 MySQL 服务器。祝你好运!

【讨论】:

【参考方案10】:

CyMySQL https://github.com/nakagami/CyMySQL

我已经在我的 windows 7 上安装了 pip,使用 python 3.3 只是 点安装cymysql

(你不需要 cython) 快速无痛

【讨论】:

【参考方案11】:

这并没有完全回答我最初的问题,但我认为让每个人都知道我做了什么以及为什么这样做很重要。

我选择继续使用 python 2.7 而不是 python 3,因为 2.7 示例和模块在网络上普遍存在。

我现在使用 mysqldb 和 mysql.connector 在 Python 2.7 中连接到 MySQL。两者都很棒并且工作良好。不过,我认为 mysql.connector 从长远来看最终会更好。

【讨论】:

我很好奇你是否还在使用 Python 2.7。总的来说,我认为过渡到 Python 3 真的很重要,而且我很惊讶地看到有这么多程序员选择 Python 2.7 来进行新项目。事情进展如何? @vy32 如果您考虑到许多服务器操作系统不直接支持 Python 3,我认为您可能不会对开发人员选择 py27 感到惊讶。Red Hat Enterprise Linux 仍然与 Python 2.6 捆绑在一起 直到最新版本,甚至那个版本也只有 py27。 使用 python 2.7 的另一个原因是因为 Maya(支持 python)在内部使用 2.7。顺便说一句...如果您还需要在 Maya 中通过 python 连接到 MySQL...请使用纯 python mysql 连接器。【参考方案12】:

我在树莓派上使用 cymysql 和 python3 我只是通过以下方式安装: sudo pip3 安装 cython 须藤 pip3 安装 cymysql 其中 cython 不是必需的,但应该使 cymysql 更快

到目前为止,它就像一个魅力,非常类似于 MySQLdb

【讨论】:

【参考方案13】:

这是一个关于如何让 Python 3.7 与 Mysql 一起工作的快速教程 感谢所有从我那里得到问题答案的人 - 希望有一天这对某人有所帮助。 -------------------------------------------------- --我的系统: Windows 版本:Pro 64 位

要求..首先下载并安装这些...1.下载 Xampp..https://www.apachefriends.org/download.html2.下载Pythonhttps://www.python.org/downloads/windows/ -------------- //方法 -------------- 安装完成后先安装 xampp - 安装 Python 3.7。 完成安装后 - 重新启动您的 Windows 系统。 现在启动 xampp 并从控制面板启动 mysql 服务器。 打开 CMD 并在终端类型中确认版本

c:\>cd c:\xampp\mysql\bin

c:\xampp\mysql\bin>mysql -h localhost -v
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 10.1.21-MariaDB mariadb.org binary distribution

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

这是检查MYSQL版本

c:\xampp\mysql\bin>python
Python 3.7.0b3 (v3.7.0b3:4e7efa9c6f, Mar 29 2018, 18:42:04) [MSC v.1913 64 bit (AMD64)] on win32

这是为了检查 Python 版本 现在两者都已确认在 CMD 中键入以下内容...

c:\xampp\mysql\bin>pip install pymysql

pymysql安装完成后 在您的桌面或其他任何地方创建一个名为“testconn.py”的新文件以便快速访问。 使用 sublime 或其他文本编辑器打开此文件并将其放入其中。 请记住更改设置以反映您的数据库。

#!/usr/bin/python
import pymysql
pymysql.install_as_MySQLdb() 

import MySQLdb
db = MySQLdb.connect(user="yourusernamehere",passwd="yourpasswordhere",host="yourhosthere",db="yourdatabasehere")
cursor = db.cursor()
cursor.execute("SELECT * from yourmysqltablehere")
data=cursor.fetchall()
for row in data :
    print (row)
db.close()

现在在你的 CMD 中 - 输入

c:\Desktop>testconn.py

就是这样...您现在已从 python 脚本完全连接到 mysql... 享受...

【讨论】:

【参考方案14】:

进口

import pymysql

打开数据库连接

db = pymysql.connect("localhost","root","","ornament")

使用 cursor() 方法准备一个游标对象

cursor = db.cursor()

sql = "SELECT * FROM item"

cursor.execute(sql)

获取列表列表中的所有行。

results = cursor.fetchall()
for row in results:
   item_title = row[1]
   comment = row[2]
   print ("Title of items are the following  = %s,Comments are the following = %s" % \
          (item_title, comment))

【讨论】:

以上是关于如何在 Windows 上的 Python 3 中连接到 MySQL?的主要内容,如果未能解决你的问题,请参考以下文章

在蓝牙环境中的Windows上的Python 3.5。请求的地址在其上下文中无效

如何在 Windows 上的 Anaconda Python 中安装 Keras 和 Theano?

Windows 上的 pyodbc 和 python 3.4

我可以在 windows 上的 python 中使用 android 模块吗

如何在 Windows 上的 Python 中在后台播放音乐?

在 Windows10 上的 Python 3.10 中安装 scipy 时出错