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


145

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

有二进制文件存在的存储库mysqldb吗?如何在Windows的Python 3中连接到MySQL?


感谢casevh链接到非官方二进制文件,但是我太急躁了,看来群众仍然在使用python2 ...,所以我安装了python 2.7,并从codegood.com/archives/129
panofish


1
每次输入点子时,我的胃都会动弹。7年,而且还在继续。
Ska

Answers:


274

当前有一些将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

  • pymysql的fork与可选的C加速

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

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

此处的基准测试:https//github.com/methane/mysql-driver-benchmarks


26
pip install mysqlclient 只是为我工作!感谢您提供的完整选项列表。
ILMostro_7

4
mysqlclient刚为我的Python3.4 + Django + Passenger + Dreamhost安装工作。
ryanjdillon


看起来mysqlclient在debian中testingpython3-mysqldb,但不在中stable。因此它将在下一版本中。
科林·安德森

在ubuntu上安装mysql连接器,您可以使用aptsudo apt-get install python3-mysql.connector
peiman F.17.04.04

67

您可能应该使用pymysql-纯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()

14
不幸的是,这是一个归零文档库,恰好不起作用
o0'。

7
@Lohoris:我怎么会毫无问题地使用它?
Oleh Prypin 2011年

我无法使用Python 3.x在Windows 7上安装它。有人知道吗?
保罗

3
此处为Python版本3.3.1,但未安装。投诉缺少名为的模块constants
Pijusn

@Pius因为您做错了。刚刚检查,它的工作原理。
Oleh Prypin 2013年

7

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

因此,我放弃了pymysql,而选择了Oracle MySQL连接器

它作为安装程序包提供,开箱即用。而且似乎也有据可查。


我使用的是MySQLdb,效果很好,但是很显然,随着时间的推移,我希望它会成为事实上的标准。
panofish 2014年

6

如果要先使用MySQLdb,则必须在Windows上键入cmd,在PC上安装pymysql

    pip install pymysql

然后在python shell中键入

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

这将建立连接。



5

摘要

Mysqlclient是最佳选择(IMHO),因为它可以与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尚未移植



2

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

我在Python 3.3中使用了它,并发现它运行良好。还可以与SQLAlchemy一起使用。

另请参阅以下问题:登上Python 3火车是否还为时过早?


1

在我的Mac OS X上,我尝试这样做:

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

  1. 导入pymysql。如果没有错误,则表示安装正常。为了验证,编写一个脚本以这种形式连接到mysql:

  2. #一个用于MySQL连接的简单脚本import pymysql db = pymysql.connect(host =“ localhost”,user =“ root”,passwd =“* “,db =” biblioteca“)#当然,这是我的数据库的信息#关闭连接db.close()*

给它起一个名字(例如“ con.py”)并将其保存在桌面上。在终端中,键入“ cd desktop”,然后输入$ pythoncon.py。如果没有错误,则说明您已连接MySQL服务器。祝好运!



0

这并不能完全回答我最初的问题,但我认为让所有人知道我的工作和原因很重要。

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

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


我很好奇您是否仍在使用Python 2.7。总的来说,我认为过渡到Python 3确实很重要,而且我看到如此多的程序员为新项目选择Python 2.7感到惊讶。事情如何进行?
vy32 2015年

@ vy32我认为,如果您认为许多服务器操作系统不直接支持Python 3,那么开发人员选择py27可能会让您感到不惊讶。在直到最新版本之前,Red Hat Enterprise Linux仍与Python 2.6捆绑在一起,甚至只有一个版本。有py27。
coredumperror

使用python 2.7的另一个原因是因为Maya(支持python)在内部使用2.7。顺便说一句...如果您还需要在Maya中通过python连接到MySQL,请使用纯python mysql连接器。
panofish

0

我在树莓派上通过python3使用cymysql,我只需通过以下方式安装:sudo pip3 install cython sudo pip3 install cymysql在没有cython的情况下,但应使cymysql更快

到目前为止,它的工作原理很吸引人,与MySQLdb非常相似


0

这是一个有关如何使Python 3.7与Mysql一起使用的快速教程,
感谢所有得到我问题解答的人
-希望有一天能对您有所帮助。
-------------------------------------------------- -
我的系统:
Windows版本:Pro 64位

要求..下载并安装这些第一...
1.下载XAMPP ..
https://www.apachefriends.org/download.html
2.下载的Python
https://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 ...
享受...


0

导入pymysql

打开数据库连接

db = pymysql.connect(“ localhost”,“ root”,“”,“装饰品”)

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

cursor = db.cursor()

sql =“ SELECT * FROM项目”

cursor.execute(sql)

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

结果=结果的cursor.fetchall():item_title = row [1]注释= row [2]打印(“项目标题为以下=%s,注释为以下=%s”%\(item_title,评论))

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.