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

Posted

技术标签:

【中文标题】我应该如何设置 aiomysql 池缓存?【英文标题】:How should I set up aiomysql pool cache? 【发布时间】:2020-05-08 04:09:54 【问题描述】:

当我使用aiomysql中的mysql_pool更新一条数据时,第一次和第二次一样。

class Test(object):
    async def _pool(self):
        self.pool = await aiomysql.create_ç(**mysql_options)

    async def get_one(self, sql, param=None):
        await self.cur.execute(sql, param)
        result = await self.cur.fetchone()
        return result

    async def get(self):
        self.conn = await self.pool.acquire()
        self.cur = await self.conn.cursor(DictCursor)
        sql = '''select policy from tb_user where id = 2;'''
        res = await self.get_one(sql)
        print(res)
        await self.cur.close()
        await self.pool.release(self.conn)

    @staticmethod
    def update():
        import pymysql
        coon = pymysql.connect(host='127.0.0.1',
                               port=3306,
                               user=mysql_options['user'],
                               autocommit=True,
                               password=mysql_options['password'],
                               database=mysql_options['db'])
        cursor = coon.cursor()
        sql = '''update tb_user set policy = 9 where id = 2;'''
        cursor.execute(sql)
        sql = '''select policy from tb_user where id = 2;'''
        cursor.execute(sql)
        data = cursor.fetchone()
        print(data)
    async def run(self):
        await self._pool()
        await self.get()
        self.update()
        await self.get()


if __name__ == '__main__':
    test = Test()
    loop = asyncio.get_event_loop()
    loop.run_until_complete(test.run())

版本

python 3.7.0 aiomysql 0.0.20

结果:

【问题讨论】:

我想你在更新表格后忘记了await coon.commit() 声明。 另外,你为什么使用pymysql而不是aiomysql来进行更新功能? 提供minimal, reproducible example。 我用pymysql来模拟任何更新数据的方式。 我的操作只涉及查询,应该不需要commit。 【参考方案1】:

你需要承诺。即使只有SELECT 查询,也可以运行await conn.commit()

【讨论】:

以上是关于我应该如何设置 aiomysql 池缓存?的主要内容,如果未能解决你的问题,请参考以下文章

16翻译aiomysql-Pool

aioMySQL 未与 python 连接

如何在多个 Symfony 实例之间共享应用程序缓存(共享缓存池)?

Springboot + MyBatis入门培训 3 多数据源与缓存和数据连接池设置

Airflow:如何指定资源池的定量使用?

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