我想提高SQLAlchemy的性能,在单个API调用中,我已经提交了所有地方,我是否会聚合这些会话添加,并在API调用结束时进行提交?或者,如果我在整个地方做到这一点是否重要?
谢谢!
答案 0 :(得分:1)
提交应该在相关调用的逻辑块之后发生,您希望保存所有这些记录(对象)或没有。如果一个失败,你希望它们都失败(回滚)。另一方面,将不相关的调用组合成单个事务可能会导致意外的副作用,发生意外错误,并且当它确实应该保存得很好时,您不想要的东西会回滚,这不是您正在做的事情但我之前见过这个表现。
无论如何,通常情况下,我在每个API调用结束时都有一个提交,因为我认为API调用是全有或全无的交易,我怀疑如果我在一个唯一的密钥违规时半保存数据,调用者会很高兴在中间某处被击中。
我在SA文档中找到了这个页面,处理会话解释了如何布置我的会话,事务等。 lifespan-of-a-contextual-session