刷新删除后的sqlalchemy查询

时间:2013-11-13 12:56:34

标签: python sqlalchemy

鉴于这段代码:

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

1 个答案:

答案 0 :(得分:0)

我在这里犯了一个愚蠢的错误。我正在使用的会话是一个路由会话,它后面有一个主/从会话。事实可能是删除被刷新为master并且查询仍然转到slave,所以当然我可以再次查询记录。