2012-01-06 61 views
0

我正在嘗試使用批量保存對象的實驗。使用Django調試工具欄,我可以看到有多少SQL查詢運行。但是,看起來裝飾器對SQL查詢的數量沒有影響 - 它在裝飾器或沒有裝飾器的情況下保持不變。它應該減少嗎?django的commit_on_success對sql查詢的數量沒有影響

@transaction.commit_on_success() 
def fastsave(queryset): 
    for t in queryset: 
     t.save() 

def test(request): 
    fastsave(TimeEvent.objects.all()) 
    return render_to_response('test.html', {}) 

回答

3

號的transaction裝飾只會影響查詢最終確定,不多少中運行。

+0

有什麼辦法可以優化這個嗎?我有一個很大的查詢集,我將更新每個對象,但是目前這會針對每個對象命中數據庫並導致一些事情發生。 – victor 2012-01-06 07:09:47

+1

如果你更新每個對象,那麼它會擊中每個對象。儘可能通過查詢集進行批量更新。 – 2012-01-06 07:12:06