мне нужно использовать django reset_queries () - PullRequest
4 голосов
/ 09 февраля 2012

я использую django 1.3 и запускаю скрипт вне веб-контекста (из командной строки).
мой код продолжает читать 10000 записей из БД каждый раз.
я заметил, что использование памятисо временем процесс становится больше.
мой код:

def getData(startIndex,chunkSize):
    dataList =Mydata.objects.filter(update_date__isnull = True)[startIndex:startIndex+chunkSize]
    return list(dataList)

if __name__ == '__main__':
   chunkSize = 10000
   startIndex = 0
   dataSize = Mydata.objects.filter(update_date__isnull = True).count()
   while startIndex < dataSize:
       dataList = getData(startIndex,chunkSize)
       startIndex += chunkSize
       do_stuff(dataList)

мой вопрос: мне нужно использовать reset_queries() и или connection.close()
, и это причинадля увеличения использования памяти?

1 Ответ

1 голос
/ 09 февраля 2012

Я бы начал с использования только или defer методов в вашем запросе.Эти два используются для получения только тех полей, которые вам действительно нужны, а не всех полей.Ваш запрос будет немного быстрее и будет занимать меньше памяти, потому что ненужные поля не будут выбираться из базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...