4

我正在构建一个需要高速连接的 python3 应用程序。作为一个纯 python 库,PyMySQL 在连接和执行查询方面会比基于 C 的 MySQLdb 慢很多吗?

未来版本的 python 是否很好地支持 PyMySQL?

如果没有,任何人都可以提出一个可靠的替代方案吗?

4

2 回答 2

5

PyMySQL 是用纯 Python 实现的,而 MySQLdb 是 C 扩展。PyMySQL 很容易在某些系统中安装(有时是唯一的方法),而 MySQLdb 有时会出现问题。

但两者都只是 MySQL python 连接器。

为什么选择 PyMySQL?MySQL 是一种非常流行的 RDBMS,在使用 Python 编写 Web 应用程序时,您通常需要与它交谈。事实上的标准 MySQLdb 是一个 C 扩展模块,以难以编译而著称,特别是如果你在 Mac 上(就像我一样)。此外,最终用户需要等待为每个新版本的 Python 编译新的二进制文件,而 MySQLdb 永远不会在 Jython、IronPython 或 PyPy(没有 cpyext 或 IronClad 之类的东西)上运行。我们还保持 Python 2 和 Python 3 之间 100% 的兼容性,因此在 2.x 主干上所做的所有改进都将立即在 Python 3 上可用。

我们正在开发一个替代 MySQLdb 的插件,它“可以正常工作”,无需编译和安装 C 扩展,也无需担心您使用的是什么平台。

来源https://code.google.com/p/pymysql/wiki/Goals

于 2015-03-27T14:06:20.730 回答
4

许多项目使用 PyMySQL,因为它支持 Python 3(3.3 及更高版本)以及 Python 2。在撰写本文时,它在 Github 上有超过 650 个分支和超过 60 个贡献者。每隔几个月左右就会对其进行定期更新和补丁,它在 Python 社区中很受欢迎,因为它相对容易安装和 Python 3 支持。所以所有这一切,是的,我会说它得到了很好的支持。

现在为了速度:因为它是用纯 Python 编写的,而 MySQLdb 是 C 语言,所以你可以预期 PyMySQL 会更慢。对于深入分析,我建议查看本文底部的 openstack 链接。根据他们的测试,PyMySQL 比 MySQLdb 慢大约 10 倍。但是,对于 DB 调用,无论如何您大多受 IO 限制,因此 PyMySQL 支持 gevent 或类似的异步 IO 的优势可能会根据您的应用程序弥补速度。

资料来源:

  1. https://github.com/PyMySQL/PyMySQL
  2. https://wiki.openstack.org/wiki/PyMySQL_evaluation
于 2017-07-19T14:28:02.110 回答