所以说我想使用for循环更改数据库中一组项的属性。 (使用flask + SQLAlchemy)Python
我应该在整个循环结束后进行提交:
for item in items:
do stuff
db.session.commit()
或者每次迭代后?
for item in items:
do stuff
db.session.commit()
答案 0 :(得分:1)
所有迭代后你必须commit
。
commit
每次更改值或每次迭代都不是一个好的解决方案。
答案 1 :(得分:1)
当您确定数据处于期望的状态时,您应该提交。也就是说,当commit
失败后的下一个操作时,您不在乎是否有人阅读了结果。
在这种情况下,您不太可能期望您的部分商品位于数据库中,并且部分商品会丢失。所以你应该在循环之后提交。
与对象的操作相同;在下列情况下,如果第一个名字发生了变化,你会没事,但不是姓吗?
def change_fullname():
user = get_user()
user.first_name = 'Woop'
user.last_name = 'Bar'
没有。因为这不是所谓的操作所做的事情,我们不希望有人只是使用已更改的名字来读取用户。因此,只有在完成所有属性更改后才能完成提交。