美文网首页
使用Flask-SQLAlcheme无法查询到手动更改的数据库最

使用Flask-SQLAlcheme无法查询到手动更改的数据库最

作者: 愤愤的有痣青年 | 来源:发表于2023-12-03 16:33 被阅读0次

在业务开发中,遇到这样一个问题
在一个线程中,批量对表Table进行修改,步骤如下:

1. 查询每条数据a;
2. 修改数据a;
3. commit提交;
4. 再查询了一遍修改后的a数据;

后来发现,在先执行过一遍上述流程后,使用navicat修改Table表a的数据,但是该批量操作中,步骤1查询到的数据a仍然是未修改过的数据

问题可以精简为如下情况:

flask shell:
#1. 查询数据
user = Users.query.filter(Users.id==1).first()
print(user.name) # 输出: 小张

# 2. 使用navicat修改id=1的数据为 小王
# 3. 重新查询数据
user = Users.query.filter(Users.id==1).first()
print(user.name) # 输出的仍然是 小张

原因: sqlalcheme中的session会缓存之前的查询结果,直至发生commit

我最开始的问题,在于将数据commit后,重新查询了一遍数据,使得session缓存了数据,之后修改数据后重新查询时,使用的会是缓存.

解决方案: 优化查询步骤,将其放到commit之前

相关文章

网友评论

      本文标题:使用Flask-SQLAlcheme无法查询到手动更改的数据库最

      本文链接:https://www.haomeiwen.com/subject/neakgdtx.html