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

pan*_*ish 143 python mysql python-3.x

我在Windows上使用ActiveState Python 3并希望连接到我的MySQL数据库.我听说那mysqldb是使用的模块.我找不到mysqldbPython 3.

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

Col*_*son 259

目前有一些使用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

  • `pip install mysqlclient`*刚刚为我工作*!感谢全面的选项列表. (22认同)
  • `pip install pymysql`适合我! (3认同)
  • `mysqlclient`只适用于我的Python3.4 + Django + Passenger + Dreamhost安装. (2认同)

Ole*_*pin 66

您应该使用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()
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,它是一个ZERO记录的库,碰巧*只是不起作用* (14认同)
  • @Lohoris:为什么我没有任何问题地使用它? (7认同)
  • 链接更改:[项目移动到github](https://github.com/petehunt/PyMySQL/) (3认同)
  • 这里的Python版本3.3.1并没有安装.关于缺少模块的抱怨称为"常量". (3认同)

Bog*_*ogd 7

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

所以我放弃了pymysql,我决定使用Oracle MySQL连接器.

它作为一个安装包,开箱即用.而且它似乎也得到了很好的记录.


小智 6

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

    pip install pymysql
Run Code Online (Sandbox Code Playgroud)

然后在python shell中输入

    import pymysql
    pymysql.install_as_MySQLdb()
    import MySQLdb
    db = MySQLdb.connect("localhost" , "root" , "password")
Run Code Online (Sandbox Code Playgroud)

这将建立连接.


cas*_*evh 5

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

非官方的Windows二进制文件


sag*_*ise 5

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

import pymysql
pymysql.install_as_MySQLdb()
Run Code Online (Sandbox Code Playgroud)

github 上还有一个针对 python3 的 mysql-python 端口。

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


Rah*_*hul 5

概括

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()
Run Code Online (Sandbox Code Playgroud)

我找不到 Python 3 的 mysqldb。

mysqldb 尚未移植