From 3b5083bee5e96539dec599106aece9889e70ce05 Mon Sep 17 00:00:00 2001 From: Claude Paroz Date: Sat, 26 May 2012 11:43:37 +0200 Subject: Fixed #5423 -- Made dumpdata output one row at a time. This should prevent storing all rows in memory when big sets of data are dumped. See ticket for heroic contributors. --- django/core/serializers/python.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'django/core/serializers/python.py') diff --git a/django/core/serializers/python.py b/django/core/serializers/python.py index 195bf11d24..49120434eb 100644 --- a/django/core/serializers/python.py +++ b/django/core/serializers/python.py @@ -27,13 +27,16 @@ class Serializer(base.Serializer): self._current = {} def end_object(self, obj): - self.objects.append({ - "model" : smart_unicode(obj._meta), - "pk" : smart_unicode(obj._get_pk_val(), strings_only=True), - "fields" : self._current - }) + self.objects.append(self.get_dump_object(obj)) self._current = None + def get_dump_object(self, obj): + return { + "pk": smart_unicode(obj._get_pk_val(), strings_only=True), + "model": smart_unicode(obj._meta), + "fields": self._current + } + def handle_field(self, obj, field): value = field._get_val_from_obj(obj) # Protected types (i.e., primitives like None, numbers, dates, -- cgit v1.3