4
我有這個django views.py
方法,旨在將許多數據插入數據庫。它通過模型數組循環,並且如果一個對象不在數據庫中,它將被插入。如何強制django立即保存,而不是在循環後進行批量更新
這是代碼的樣子:
def update_my_db(request):
a_models = A_Model.objects.filter(my_flag=True)
for a_model in a_models:
b_model_array = []
[...] # this is where b_model_array gets filled
for index in range(len(b_model_array)):
current_b_model = b_model_array[index]
try:
b_model = B_Model.objects.get(my_field=current_b_model.my_field)
except (KeyError, B_Model.DoesNotExist):
b_model = B_Model.objects.create(field_1=current_b_model.field_1, field_2=current_b_model.field_2)
b_model.save()
return HttpResponse(response)
我已經經過多次測試,該數據庫只由最後一次迭代結束時更新注意到,彷彿Django的等待做批量插入到MySQL 。
問題是:任何迭代都有引發異常的可能性,使得到目前爲止所收集的所有數據因錯誤而被丟棄(已經過測試和確認)。當增加400條新線時,在循環#399處引發異常並放棄所有先前的398條線對我來說是非常不合適的。
我知道配料是關於性能的最佳選擇,但這是一個後臺程序,所以我並不擔心它。
底線:有沒有一種方法可以強制django在每次迭代時更新數據庫?