即使expire_on_commit=False,使用pyramid_tm时会话仍然过期

0 投票
1 回答
902 浏览
提问于 2025-04-17 00:39

就像标题说的那样。我想做的就是在使用session.add之后,获取返回的id(自动生成的主键)。如果我手动提交事务,而不使用pyramid_tm,一切都很好。但是当我开始使用pyramid_tm时,它似乎忽略了expire_on_commit。有什么建议吗?

1 个回答

2

它并不是忽略expire_on_commit这个设置,而是因为你的代码运行完之前,事务并没有被提交。所以你需要先刷新一下数据。下面是我通常的做法:

thing = Thing()
Session.add(thing)
Session.flush()
Session.refresh(thing)
print thing.id

撰写回答