2012-01-06 70 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