问题描述 用我自己封装的这个模块 会出现好几个问题
- insert 进去之后 select 然后会获取不到结果
- 我在命令行操作 mysql delete 一些数据 select 不会立马反应过来
两者都在我重启项目之后正常了 我感觉是缓存的问题
- 解决方案是在 insert 函数里面 尾部加入 cls.pool = None 相当于让这个 pool 失效了 下次重新建立 pool 读的是最新的数据。 但是这个解决方案对 2 没用 await cur.execute("commit;") await conn.commit() 这两者我都加了 但是感觉还是没起作用
那个 select 有缓存真的是醉了 读不到最新的数据 而且 cls.pool = None 就完全发挥不了连接池的作用了 求帮忙
class AioMysqlHelper:
pool = None
@classmethod
async def get_pool(cls):
if not cls.pool:
cls.pool = await aiomysql.create_pool(**Config.mysql)
return cls.pool
@classmethod
async def insert(cls, sql, params=None):
params = params or []
await cls.get_pool()
async with cls.pool.acquire() as conn:
async with conn.cursor() as cur:
try:
await cur.execute(sql, params)
await cur.execute("commit;")
await conn.commit()
except Exception as err:
await conn.rollback()
raise err
cls.pool = None
@classmethod
async def select(cls, sql, params=None, one=True):
params = params or []
await cls.get_pool()
async with cls.pool.acquire() as conn:
async with conn.cursor() as cur:
try:
await cur.execute(sql, params)
return await (cur.fetchone() if one else cur.fetchall())
except Exception as err:
conn.rollback()
raise err