我应该如何设置 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 池缓存?的主要内容,如果未能解决你的问题,请参考以下文章
如何在多个 Symfony 实例之间共享应用程序缓存(共享缓存池)?
Springboot + MyBatis入门培训 3 多数据源与缓存和数据连接池设置
我不知道使用python aiomysql正常。运行时间(当aiomysql不使用)是相同的运行时间aiomysql用途