我想要遍歷表(郵政)的所有對象 我使用下面的代碼:獲得從Django的百萬記錄與查詢集是慢
posts = Post.objects.all()
for post in posts:
process_post(post)
process_post
是芹菜的任務,它在後臺運行,並它沒有更新post.But我的問題是郵政表有100萬條記錄。這不是一次性的工作。我每天都在運行它。
for post in posts
在上面的行中,調用Query可以一次性獲取數據庫中的所有數據。
我該如何提高其性能? 有沒有什麼方法批量提取數據?
是'process_post'的更新方法嗎? – Surajano
使用['iterator()'](https://docs.djangoproject.com/en/dev/ref/models/querysets/#iterator)。如果它仍然導致內存消耗過多,您可能需要考慮使用數據庫端遊標。 –
Data *由Django批量提取。實際上,默認行爲是加載所有內容。但是將行加載爲python對象是一個緩慢的過程,如果你只需要簡單的處理,我建議你儘可能使用'values()'和'update()',甚至是'update()'。 ...並使該處理成爲自定義管理器或查詢集方法。 – spectras