2011-04-12 75 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