SQLAlchemy:我应该在两个查询之间提交更新吗?



在单个会话中,如果我想:

// make a query on Foo table to get one instance
// update this instance
// commit() or not?
// make the same query on Foo table

在这两个查询中,我会得到相同的结果吗?也就是说,在单个会话中对表进行查询之前,是否有必要提交更新?

谢谢!

再次进行查询之前,无需提交。作为一般原则,事务(会话(中的更新对同一事务中的后续查询可见,甚至在提交之前也是如此。

话虽如此,在事务中执行两次相同的确切查询可能是"代码气味"。 值得考虑的是,既然更新的对象已经是内存,真的有必要再次查询对象吗?

此外,根据数据库隔离级别,不保证第二个查询返回与第一个查询相同的结果集。 如果另一个事务在第二个查询之前修改了数据,则可能会发生这种情况。

没有必要同时执行两次提交,因为每个事务对数据库中的后续操作(或查询(都是可见的。

您可以将提交放在末尾,尽管我不确定多个提交是否会影响运行时。

相关内容

  • 没有找到相关文章

最新更新