This should be run asynchronously (i.e. celery) when importing large files.

If you have a lot of categories/subcategories, you will need to bulk insert
them instead of looping through the data and just using get_or_create. A
single, long transaction will definitely bring great improvements to speed.

One tool is DSE, which I've mentioned before.

Good luck!


Cheers,
AT

On Sat, Nov 26, 2011 at 8:44 PM, Petr Přikryl <prik...@atlas.cz> wrote:

>
> >>> import csv
> >>> data = csv.reader(open('/path/to/csv', 'r'), delimiter=';')
> >>> for row in data:
> >>> category = Category.objects.get_or_create(name=row[0])
> >>> sub_category = SubCategory.objects.get_or_create(name=row[1],
> >>> defaults={'parent_category': category})
> >>> product = Product.objects.get_or_create(name=row[2],
> >>> defaults={'sub_category': sub_category})
>
> There are few potential problems with the cvs as used here.
>
> Firstly, the file should be opened in binary mode.  In Unix-based
> systems, the binary mode is technically similar to text mode.
> However, you may once observe problems when you move
> the code to another environment (Windows).
>
> Secondly, the opened file should always be closed -- especially
> when building application (web) that may run for a long time.
> You can do it like this:
>
> ...
> f = open('/path/to/csv', 'rb')
> data = csv.reader(f, delimiter=';')
> for ...
> ...
> f.close()
>
> Or you can use the new Python construct "with".
>
> P.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To post to this group, send email to django-users@googlegroups.com.
> To unsubscribe from this group, send email to
> django-users+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/django-users?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to