2011-04-12 78 views
3

我正在运行Django 1.2.1与南0.7.2和DEBUG = False。 仍然是一个非常简单的数据迁移泄漏内存:Django南迁移泄漏内存

def forwards(self, orm): 
    for tr in orm.TestResult.objects.all(): 
    tr.software = tr.test_result.test_run.software 
    tr.save() 

TestResults的量是相当大的,但不应该是除了长期运行的一个现实问题。不幸的是,这个过程会持续增长,直到我的机器内存不足。

+0

我也试着运行'db.reset_queries()'后,每次循环,但它并没有改变任何东西。 – Fabian 2011-04-12 09:53:58

回答

1

我认为在你的情况下最好对所有对象执行一个sql upate查询,而不是逐个更新updatnig。您可以使用execute像这样一个SQL语句(我不知道你正在使用的数据库或数据stucture,所以这只是一个例子):

UPDATE TestResult 
    SET TestResult.software = TestRun.software 
    FROM TestResult JOIN TestRun 
     ON TestResult.test_run_id = TestRun.id