什么时候提交数据库连接?

时间:2014-02-28 08:18:21

标签: python mysql sqlalchemy flask

所以说我想使用for循环更改数据库中一组项的属性。 (使用flask + SQLAlchemy)Python

我应该在整个循环结束后进行提交:

for item in items:
    do stuff
db.session.commit()

或者每次迭代后?

for item in items:
    do stuff
    db.session.commit()

2 个答案:

答案 0 :(得分:1)

所有迭代后你必须commit

commit每次更改值或每次迭代都不是一个好的解决方案。

答案 1 :(得分:1)

当您确定数据处于期望的状态时,您应该提交。也就是说,当commit失败后的下一个操作时,您不在乎是否有人阅读了结果。

在这种情况下,您不太可能期望您的部分商品位于数据库中,并且部分商品会丢失。所以你应该在循环之后提交

与对象的操作相同;在下列情况下,如果第一个名字发生了变化,你会没事,但不是姓吗?

def change_fullname():
   user = get_user()
   user.first_name = 'Woop'
   user.last_name = 'Bar'

没有。因为这不是所谓的操作所做的事情,我们不希望有人只是使用已更改的名字来读取用户。因此,只有在完成所有属性更改后才能完成提交。