2.aiomysql实现对数据库异步读取

Posted traditional

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2.aiomysql实现对数据库异步读取相关的知识,希望对你有一定的参考价值。

有一个库叫做aiomysql,这是一个基于asyncio和pymysql的库。至于为什么可以在tornado中使用,是因为高版本tornado的底层使用了asyncio。

import asyncio
import aiomysql


async def test(loop):
    # 这里的loop就是我们通过asyncio.get_event_loop()创建的,但是其实可以不传,因为会自动创建一个
    async with aiomysql.create_pool(host="localhost", port=3306, user="root",
                                    password="zgghyys123", db="satori", loop=loop) as pool:
        async with pool.acquire() as conn:
            async with conn.cursor() as cursor:
                await cursor.execute("select * from girl")
                data1 = await cursor.fetchone()
                data2 = await cursor.fetchall()
                print(data1)
                print(data2)

        pool.close()
        await pool.wait_closed()


if __name__ == ‘__main__‘:
    loop = asyncio.get_event_loop()
    loop.run_until_complete(test(loop))
(0, ‘古明地觉‘, 16, ‘f‘)
((1, ‘椎名真白‘, 17, ‘f‘), (2, ‘古河渚‘, 20, ‘f‘))

  我们看看可不可以使用tornado去启动aiomysql

import tornado.ioloop
import aiomysql


async def test():
    # 这里的loop就是我们通过asyncio.get_event_loop()创建的,但是其实可以不传,因为会自动创建一个
    async with aiomysql.create_pool(host="localhost", port=3306, user="root",
                                    password="zgghyys123", db="satori") as pool:
        async with pool.acquire() as conn:
            async with conn.cursor() as cursor:
                await cursor.execute("select * from girl")
                data1 = await cursor.fetchone()
                data2 = await cursor.fetchall()
                print(data1)
                print(data2)

        pool.close()
        await pool.wait_closed()


if __name__ == ‘__main__‘:
    tornado.ioloop.IOLoop.current().run_sync(test)

  技术分享图片

一样是可以的,因为tornado的底层事件循环使用的便是asyncio

 

aiomysql还可以和SQLAlchemy结合

pass

以上是关于2.aiomysql实现对数据库异步读取的主要内容,如果未能解决你的问题,请参考以下文章

Asp.Net Core 轻松学-经常使用异步的你,可能需要看看这个文章

如何获取异步 Firebase 数据读取的进度?

我应该在 Fragment 中的啥生命周期状态下执行异步任务?

异步任务类完成后如何更改文本视图的值(在片段中)?

异步任务片段背景数据

如何使用 IOCP 异步读取文件?