鉴于这段代码:
record = session.query(Foo).filter(Foo.id == 1).first()
session.delete(record)
session.flush()
has_record = session.query(Foo).filter(Foo.id == 1).first()
我认为'has_record'在这里应该是None,但结果与记录相同。
我是否遗漏了某些东西以获得假设的结果。或者有没有办法可以在没有提交的情况下使删除生效?
在类似的过程中,Mysql会以不同的方式运行。
start transaction;
select * from Foo where id = 1; # Hit one record
delete from Foo where id = 1; # Nothing goes to the disk
select * from Foo where id = 1; # Empty set
commit; # Everything geos to the disk
答案 0 :(得分:0)
我在这里犯了一个愚蠢的错误。我正在使用的会话是一个路由会话,它后面有一个主/从会话。事实可能是删除被刷新为master并且查询仍然转到slave,所以当然我可以再次查询记录。