所以說我想改變一個數據庫中的一組項目的屬性,使用for循環。 (使用瓶+ SQLAlchemy的)Python的何時提交數據庫連接?
我應該做的整個循環結束後提交:
for item in items:
do stuff
db.session.commit()
或者在每次迭代後?
for item in items:
do stuff
db.session.commit()
所以說我想改變一個數據庫中的一組項目的屬性,使用for循環。 (使用瓶+ SQLAlchemy的)Python的何時提交數據庫連接?
我應該做的整個循環結束後提交:
for item in items:
do stuff
db.session.commit()
或者在每次迭代後?
for item in items:
do stuff
db.session.commit()
畢竟迭代後你必須commit
。
commit
對每個值的更改或每次迭代都不是一個好的解決方案。
如果您確定自己的數據處於預期的的狀態,則應該提交。也就是說,當您的commit
之後的下一個操作失敗時,您不關心是否有人閱讀結果。
在這種情況下,您很可能不會期望您的物品的一部分位於數據庫中,並且部分物品會丟失。所以你應該在之後提交這個循環。
同樣對對象進行操作;在下列情況下,如果名字改變了,你會好嗎,但不是最後一個名字?
def change_fullname():
user = get_user()
user.first_name = 'Woop'
user.last_name = 'Bar'
號因爲那不是操作是什麼應該做的,我們不希望有人讀取用戶只有已更改一個名字。因此,只有在完成所有屬性更改後才提交。
第一個。你在每次迭代中都沒有獲得任何東西。 – msvalkon
好的,謝謝。我對此進行了調查,但並不清楚。 –