我不知道使用python aiomysql正常。运行时间(当aiomysql不使用)是相同的运行时间aiomysql用途

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我不知道使用python aiomysql正常。运行时间(当aiomysql不使用)是相同的运行时间aiomysql用途相关的知识,希望对你有一定的参考价值。

我用aiomysql。我访问MySQL与异步的。所以我用aiomysql。但运行时间(当aiomysql不使用)是相同的运行时的时间aimysql用途。

from sqlalchemy import create_engine
import pymysql
pymysql.install_as_MySQLdb()
import pandas as pd

engine = create_engine("mysql+mysqldb://root:"+"qhdks12#$"+"@localhost/stock", encoding='utf-8')
conn = pymysql.connect(host='localhost', user='root', password="qhdks12#$", db='stock', charset='utf8')
cursor = conn.cursor()
def test():
    for i in range(10):
        sql = "select * from test;"     
        data = pd.read_sql(sql, conn, index_col=None)
%timeit test()

上面的代码,aiomysql不能使用。在Jupyter笔记本,测试()函数运行时间为“3.1小号±39.3毫秒”

import asyncio
import aiomysql as aiomysql
import pandas as pd

async def main(loop):

    pool = await aiomysql.create_pool(host='127.0.0.1', port=3306, user='root', password='qhdks12#$', db='stock', loop=loop)
    for i in range(2):
        await test(pool, loop)

async def test(pool, loop):
    async with pool.acquire() as conn:
        async with conn.cursor() as cur:
            await cur.execute("select * from test;")
            rows = ()
            rows = await cur.fetchall()
            result = pd.DataFrame.from_records(list(rows))

loop = asyncio.get_event_loop()
%timeit loop.run_until_complete(main(loop))

上面的代码,aiomysql使用。在Jupyter笔记本电脑,主(环)功能的运行时间是“3.05小号±每循环107毫秒”

运行时间是一样的。我想上面的代码不与异步连接数据库。

所以,我不知道aiomysql正常。如何使用异步连接数据库???

答案

以下代码是同步的。如果你大声读出来你是循环,等待每个测试完成后再继续。

for i in range(2):
    await test(pool, loop)

要发送您的请求,异步使用等待或聚集在一起等待他们。

futures = []
for i in range(10):
  futures.append( test(pool) )

done, pending = await asyncio.wait( futures, timeout=2 )

以上是关于我不知道使用python aiomysql正常。运行时间(当aiomysql不使用)是相同的运行时间aiomysql用途的主要内容,如果未能解决你的问题,请参考以下文章

python异步操作MySQL(aiomysql)

python异步操作MySQL(aiomysql)

python3操作aiomysql的几个案例

python3操作aiomysql的几个案例

python aiomysql的例子

我应该如何设置 aiomysql 池缓存?