आनं*_*नंद 62 python mysql database mysql-connector mysql-python
所以我一直在尝试使用python进行一些数据库更新,在设置整个开发环境的同时,我遇到了这三件令我晕眩的事情.
他们每个人,差异以及在哪里使用它们是什么?谢谢
Tar*_*syk 60
MySQLdb是一个围绕C模块的瘦python包装器,它实现了MySQL数据库的API.
有一段时间以前使用的MySQLDb1版本的包装器,现在它被认为是遗产.随着MySQLDb1开始向MySQLDb2发展,修复了bug并支持Python3,MySQLDb1被分叉,这就是mysqlclient的出现,带有错误修正和Python3支持.总结一下,现在我们有MySQLDb2尚未准备好用于生产,MySQLDb1作为过时的驱动程序和社区支持的mysqlclient具有错误修复和Python3支持.
现在,为了解决这个问题,MySQL提供了自己的MySQL适配器版本 - mysql连接器,一个全内置的python模块,它使用没有C模块依赖的 MySQL API,只使用了标准的python模块.
所以现在问题归结为:mysqlclient vs mysql连接器.
至于我,我会选择官方支持的图书馆,但也mysqlclient应该是一个不错的选择.他们都正在积极更新修复程序和新功能,您可以在过去几天通过活动提交看到它们.
注意:我对它们没有多少经验,因此可能存在一种或另一种不能满足您需求的情况.两个库都遵循PEP-249标准,这意味着你应该没有任何地方至少基本功能.
安装和依赖
作为C包装的一个分支,它需要C模块与MySQL一起工作,它添加了python头文件来构建这些扩展(读取python-dev).安装取决于您使用的系统,只需确保您知道软件包名称并可以安装它们.
ost*_*ach 44
目前维护的是适用于Python的MySQL适配器:
mysqlclient - 迄今为止最快的CPython MySQL连接器.需要mysql-connector-cC库才能工作.
PyMySQL - 纯Python MySQL客户端.根据双方的维护者mysqlclient和PyMySQL,你应该使用PyMySQL,如果:
libmysqlclient出于某种原因不能使用.mysql-connector-python - 由MySQL的MySQL小组开发的MySQL连接器,也完全用Python编写.它的表现似乎是三者中最差的.此外,由于某些许可问题,您无法从PyPI下载它(但它现在可以通过conda获得).
根据以下基准测试,mysqlclient比纯Python客户端更快(有时快10倍).
用户提供了很多选择。聚会晚点。但是我对pypy 3.7版本的基准测试只花了2美分。
MySQL Connector/Python: 23.096168518066406 [sec]
mysqlclient: 6.815327882766724 [sec]
PyMySQL: 24.616853952407837 [sec]
MySQL Connector/Python: 22.619106769561768 [sec]
mysqlclient: 6.607790231704712 [sec]
PyMySQL: 24.410773038864136 [sec]
Run Code Online (Sandbox Code Playgroud)
循环...从以前的基准测试...
def q100k(cur):
t = time.time()
for _ in range(100000):
cur.execute("SELECT 1,2,3,4,5,6")
res = cur.fetchall()
assert len(res) == 1
assert res[0] == (1, 2, 3, 4, 5, 6)
return time.time() - t
Run Code Online (Sandbox Code Playgroud)