Python 同步&异步MySQL

Posted 再认真点

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 同步&异步MySQL相关的知识,希望对你有一定的参考价值。

同步&异步MySQL

#   mysql是许多网站都需要使用到的数据库软件,用 Python操作 MysQL数据库大部分驱动都是同步的,也就是必须等待他的返回才会往下执行,如果一个 sQL执行得比较久,
#   那么会直接卡死这个线程。因此这里我们需要选择异步的Python驱动来操作 MysQL 数据库。I
import asyncio
import aiomysql
import shortuuid
import pymysql

#   异步
#   aiomysql做数据库连接的时候,需要这个loop对象
async def async_basic(loop):
    pool = await aiomysql.create_pool(
        host="127.0.0.1",
        port=3306,
        user="root",
        password="root",
        db="dvwa",
        loop=loop
    )
    async with pool.acquire() as conn:
        async with conn.cursor() as cursor:
            for x in range(10000):
                content = shortuuid.uuid()
                sql = f"insert into guestbook(comment_id,comment,name) values(2,'asd','content)"
            #执行SQL语句
                await cursor.execute(sql)
            await conn.commit()
    #关闭连接池
    pool.close()
    await pool.wait_closed()


#同步
def sync_basic():
    conn = pymysql.connect(
        host="127.0.0.1",
        port=3306,
        user="root",
        password="root",
        db="dvwa",
        loop=loop
    )
    with conn.cursor() as cursor:
        for x in range(10000):
            content = shortuuid.uuid()
            sql = f"insert into guestbook(comment_id,comment,name) values(2,'asd','content)"
            # 执行SQL语句
            cursor.execute(sql)
        conn.commit()



if __name__ == '__main__':
    #   异步:数量大时用异步
    loop = asyncio.get_event_loop()
    loop.run_until_complete(async_basic(loop))
    #  同步:sync_basic()

参考:https://study.163.com/ 知了传课

以上是关于Python 同步&异步MySQL的主要内容,如果未能解决你的问题,请参考以下文章

使用Python同步&异步爬取某视频

使用Python实现同步&异步爬虫

使用Python实现同步&异步爬虫

并发&并行 同步&异步 GIL 任务 同步锁 死锁 递归锁

python开发IO模型:阻塞&非阻塞&异步IO&多路复用&selectors

python开发IO模型:阻塞&非阻塞&异步IO&多路复用&selectors