背景

  1. 近期开发sanic框架下的系统使用到了aiomysql三方库,异步执行sql提高系统工作效率
  2. 在手动向数据库插入数据后,使用aiomysql进行select时并不能查询到刚刚插入的数据,只能重启web服务

问题定位

  1. 最终定位问题为数据库操作仅针对非select进行了commit,造成select一直使用的是缓存

解决

  1. 一种方式是在所有的query语句之后都对上一次查询进行commit
async with self.pool_db.acquire() as conn:
    # some query
    await conn.commit()
  1. 另一种方式是在执行sql之前将连接设置自动提交模式
async with self.pool_db.acquire() as conn:
    await conn.autocommit(True)

引用

  1. (StackOverflow)[https://stackoverflow.com/questions/21974169/how-to-disable-query-cache-with-mysql-connector]