- 使用 asyncpg 运行 asyncio 友好的数据库查询
前面我们提到过,现有的阻塞型库无法与协程无缝配合。要实现数据库查询的并发执行,我们必须使用支持 asyncio 的库,这类库基于非阻塞套接字。这里我们要用到一个叫 asyncpg 的库,它能让我们异步连接到 PostgreSQL 数据库并执行查询。
本章以 PostgreSQL 为例,但这些知识同样适用于 MySQL 等其他数据库。aiohttp 的作者还开发了 aiomysql 库,可以连接和查询 MySQL。虽然两者有差异,但接口很相似,知识可迁移。值得一提的是,asyncpg 并没有实现 PEP-249(Python 数据库 API 规范),这是作者有意为之,因为并发实现与同步实现本质不同。而 aiomysql 则实现了该规范,所以对用过同步数据库驱动的人来说会更熟悉。
asyncpg 的官方文档地址是:https://magicstack.github.io/asyncpg/current/(https://magicstack.github.io/asyncpg/current/)。了解了这个驱动后,我们来连上第一个数据库吧。