2024-09-24 22:18:50 发布
网友
所以我一直在尝试用python进行一些数据库更新,在设置整个dev环境时,我遇到了这三件事,这让我头晕。
有MySQLdb
有mysqlclient
它们各有什么区别,在哪里使用?谢谢
A lot of options provided by users. Little late to party. But my 2 cents in on with benchmarking for pypy 3.7 version.
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]
循环。。。从以前的基准。。。
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
目前正在维护用于Python的MySQL适配器:
^{}-目前为止最快的MySQL连接器。需要mysql-connector-cC库才能工作。
mysql-connector-c
^{}-纯Python MySQL客户端。According to the maintainer of both ^{} and ^{},您应该使用PyMySQL,如果:
PyMySQL
libmysqlclient
^{}-MySQL连接器是由Oracle的MySQL小组开发的,也是完全用Python编写的。它的表现似乎是三项中最差的。另外,由于一些许可问题,您不能从PyPI下载它(但现在可以通过conda获得)。
根据以下基准测试,mysqlclient比纯Python客户机更快(有时快10倍)。
mysqlclient
MySQLdb是一个围绕C模块的瘦python包装器,它实现了针对MySQL数据库的API。
很久以前有一个MySQLDb1版本的包装器,现在它被认为是一个遗留的。当MySQLDb1开始演变成MySQLDb2并支持bug修复和Python3时,MySQLDb1被分叉,这里是mysqlclient如何出现的,并支持bug修复和Python3。综上所述,现在我们有了尚未准备好投入生产使用的MySQLDb2,MySQLDb1是一个过时的驱动程序,还有一个社区支持的mysqlclient,它提供了bug修复和Python3支持。
现在,为了解决这个问题,MySQL提供了自己版本的MySQL适配器-mysql connector,这是一个使用MySQL API的all-in-python模块,没有C模块依赖关系,只使用标准python模块。
所以现在的问题归结为:mysqlclient与mysql connector。
至于我,我会选择官方支持的库,但是mysqlclient也应该是一个不错的选择。 这两个版本都在使用修复程序和新功能进行主动更新,您可以通过前几天的主动提交看到这些功能。
注意:我对它们没有太多的经验,所以可能会有这样或那样的情况不符合您的需要。这两个库都遵循PEP-249标准,这意味着您应该可以在任何地方至少使用基本功能。
安装和依赖项
作为C包装的一个分支,它需要C模块与MySQL一起工作,MySQL添加了python头文件来构建这些扩展(read python dev)。安装取决于您使用的系统,只需确保您知道软件包名称并可以安装它们。
如果您想要更快的访问和重复访问,请坚持使用mysqlclient
循环。。。从以前的基准。。。
目前正在维护用于Python的MySQL适配器:
^{} -目前为止最快的MySQL连接器。需要
mysql-connector-c
C库才能工作。^{} -纯Python MySQL客户端。According to the maintainer of both ^{} and ^{} ,您应该使用
PyMySQL
,如果:libmysqlclient
。^{} -MySQL连接器是由Oracle的MySQL小组开发的,也是完全用Python编写的。它的表现似乎是三项中最差的。另外,由于一些许可问题,您不能从PyPI下载它(但现在可以通过conda获得)。
基准
根据以下基准测试,
mysqlclient
比纯Python客户机更快(有时快10倍)。MySQLdb是一个围绕C模块的瘦python包装器,它实现了针对MySQL数据库的API。
很久以前有一个MySQLDb1版本的包装器,现在它被认为是一个遗留的。当MySQLDb1开始演变成MySQLDb2并支持bug修复和Python3时,MySQLDb1被分叉,这里是mysqlclient如何出现的,并支持bug修复和Python3。综上所述,现在我们有了尚未准备好投入生产使用的MySQLDb2,MySQLDb1是一个过时的驱动程序,还有一个社区支持的mysqlclient,它提供了bug修复和Python3支持。
现在,为了解决这个问题,MySQL提供了自己版本的MySQL适配器-mysql connector,这是一个使用MySQL API的all-in-python模块,没有C模块依赖关系,只使用标准python模块。
所以现在的问题归结为:mysqlclient与mysql connector。
至于我,我会选择官方支持的库,但是
mysqlclient
也应该是一个不错的选择。 这两个版本都在使用修复程序和新功能进行主动更新,您可以通过前几天的主动提交看到这些功能。注意:我对它们没有太多的经验,所以可能会有这样或那样的情况不符合您的需要。这两个库都遵循PEP-249标准,这意味着您应该可以在任何地方至少使用基本功能。
安装和依赖项
作为C包装的一个分支,它需要C模块与MySQL一起工作,MySQL添加了python头文件来构建这些扩展(read python dev)。安装取决于您使用的系统,只需确保您知道软件包名称并可以安装它们。
相关问题 更多 >
编程相关推荐