我正在构建一个需要高速连接的 python3 应用程序。作为一个纯 python 库,PyMySQL 在连接和执行查询方面会比基于 C 的 MySQLdb 慢很多吗?
未来版本的 python 是否很好地支持 PyMySQL?
如果没有,任何人都可以提出一个可靠的替代方案吗?
我正在构建一个需要高速连接的 python3 应用程序。作为一个纯 python 库,PyMySQL 在连接和执行查询方面会比基于 C 的 MySQLdb 慢很多吗?
未来版本的 python 是否很好地支持 PyMySQL?
如果没有,任何人都可以提出一个可靠的替代方案吗?
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 扩展,也无需担心您使用的是什么平台。
许多项目使用 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 的优势可能会根据您的应用程序弥补速度。
资料来源: