From 8f55a71292e6c41492c6def34ec108ac20e853aa Mon Sep 17 00:00:00 2001 From: Andrew Williams Date: Mon, 24 May 2010 14:57:16 +0100 Subject: [PATCH] Added utility script to export as CSV --- utils.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 utils.py diff --git a/utils.py b/utils.py new file mode 100644 index 0000000..352bb3c --- /dev/null +++ b/utils.py @@ -0,0 +1,38 @@ +import csv +from django.db.models.loading import get_model + +def dump(qs, outfile_path): + """ + Takes in a Django queryset and spits out a CSV file. + + Usage:: + + >> from utils import dump2csv + >> from dummy_app.models import * + >> qs = DummyModel.objects.all() + >> dump2csv.dump(qs, './data/dump.csv') + + Based on a snippet by zbyte64:: + + http://www.djangosnippets.org/snippets/790/ + + """ + model = qs.model + writer = csv.writer(open(outfile_path, 'w')) + + headers = [] + for field in model._meta.fields: + headers.append(field.name) + writer.writerow(headers) + + for obj in qs: + row = [] + for field in headers: + val = getattr(obj, field) + if callable(val): + val = val() + if type(val) == unicode: + val = val.encode("utf-8") + row.append(val) + writer.writerow(row) +