mysql不支持python3吗_Python连接MySQL的条条大路

在写程序的时候,我们不免要和数据库打交道。比如,爬虫存储爬来的数据,Web网站存储数据,数据分析读数据保存结果,都免不了读写数据库。

eddd8f4d216a7ae3fe1a48bbc551fe0e.png

作为一款著名的开源数据库,MySQL往往是一个方便快捷的选择。而Python出了名的库多,当然连接MySQL的的库也是不少。虽然库很多,但都遵循一个标准:PEP-249 Python Database API Specification v2.0。所以,它们的接口也基本上一致,使用起来也方便。

虽然这些MySQL的Python库接口都一样,但它们的性能、受欢迎度还是有所差别的。下面我们就讨论一下各自的特点,以便选择适合我们自己的库。

901ec947feae3d0ae7ad263385c15b4e.png

(1)MySQLdb

这可能是最古老的连接MySQL的Python库,基于MySQL C API开发,所以它依赖MySQL库:libmysqlclient。

支持的Python版本:

2.4 – 2.7,不支持3.0+

PyPI主页:

https://pypi.org/project/MySQL-python/

PyPI安装:

pip install MySQL-python

代码网址:

http://sourceforge.net/projects/mysql-python

代码还是放在古老的SourceForge上,且年久失修不再更新。从这里可以追溯到0.9.1版本是发布于2001年。

这个库在Python 2时代用的很多,也是我用Python2时一直使用的库。但在Python 3时代,它停滞了。取而代之的是,mysqlclient。

c99c093e33dba0bb47ef3cc5506b900f.png

(2)mysqlclient

从MySQLdb继承而来,添加了对python 3的支持,同时修复bug。

支持的Python版本:

2.7, 3.4+

PyPI主页:

https://pypi.org/project/mysqlclient/

PyPI安装:

pip install mysqlclient

代码网址:

https://github.com/PyMySQL/mysqlclient-python

github上获得1300+个星,一直都更新。这个github仓库就是后面PyMySQL组织维护的。

如果你想升级Python 2代码到3,那时用的是MySQLdb,又想继续享受MySQL C API带来的快速,可以考虑这个库。

以上两个MySQL库都是基于C API,并且不支持asyncio。而数据库读写其实就是IO,利用异步IO来操作,可以提高你的程序的并发性。比如,异步爬虫、异步web。于是,就出现了纯Python实现的PyMySQL,当然它还不是异步的,异步的是基于它的aiomysql。

(3)PyMySQL ✔️

基于 PEP-249 规范使用纯Python开发的MySQL连接库,是相当活跃的一个库,github有4700+个星。如果你已经开始使用Python 3(难度不是必须用3了么),强烈推荐使用这个库。我转到Python 3后就开始使用这个库了,并仿照tornado对MySQLdb的封装对其进行了封装。微信公众号回复pymysql可以获得封装后的源码。

支持的Python版本:

2.7, 3.5+

PyPI主页:

https://pypi.org/project/PyMySQL/

PyPI安装:

pip install PyMySQL

代码网址:

https://github.com/PyMySQL/PyMySQL

(4)aiomysql

通过asyncio来访问MySQL数据库,基于PyMySQL。在你的程序需要异步访问数据库时就可以用此库。我在使用异步web框架Sanic时,也做了类似对PyMySQL的封装叫做 SanicDB。这样,无论我是异步还是同步访问数据库时,接口基本一致,方便我写代码而已。

支持的Python版本:

3.5+, await/async 语法支持

PyPI主页:

https://pypi.org/project/aiomysql/

PyPI安装:

pip install aiomysql

代码网址:

https://github.com/aio-libs/aiomysql

github上这个https://github.com/aio-libs/ 有各种支持asyncio的库,包括大名鼎鼎的 aiohttp、aiomysql、aiopg等。当你的 Python 需要异步操作时,不妨到那里去看看,或许有所发现。

(5)MySQL Connector/Python

这是MySQL官方的库,竟然还以两种方式实现:纯Python和基于MySQL的C库。这个官方的我之前怎么一直没遇到呢?没有用过也就不做过多评论了。有用过的朋友可以留言说说使用心得哦。

支持的Python版本:2.7,3.5+,

PyPI主页:

https://pypi.org/project/mysql-connector-python/

PyPI安装:

pip install mysql-connector-python

官方网址:

https://dev.mysql.com/downloads/connector/python/

结尾:关于ORM

上面介绍的都是API级别的读写MySQL,进一步的封装就是ORM了。对于ORM,不同的人有不同的喜好。对于我来说,它过于繁琐,不然写SQL简洁。但有些人的观点却恰恰相反。在我看来,ORM的好处是,对于换数据库很方便。如果你前期用的MySQL,后来要换成PostgreSQL,ORM在这个时候就凸显了它的方便,可能仅仅是几行代码的修改量。但是,我一直用MySQL也不打算换库,所以就一直“简单”的写SQL了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值