Thank you very much for this. I'll catch up with those threads and read 
more about DSE, which looks really interesting work.

regards

George

On Wednesday, 2 January 2013 11:50:54 UTC, Cal Leeming [Simplicity Media 
Ltd] wrote:
>
> Hi George,
>
> This is one area I spent quite a lot of time in personally, see;
>
> https://groups.google.com/forum/?fromgroups=#!msg/django-users/iRhWD0FtW8k/0KAMF3ub-ZYJ
> https://groups.google.com/forum/#!topic/django-users/hgLrwMoFLII
>
> Bulk operations using the ORM isn't always the right thing to do - and it 
> entirely depends on what you consider bulk and acceptable performance.
>
> You might want to look at the source code for this, to see how they handle 
> bulk operations (they implemented the same bulk_update approach mentioned 
> in the above threads)
> http://pypi.python.org/pypi/dse
>
> Although bypassing the ORM might feel wrong at first, sometimes it is 
> completely acceptable - you just need to make sure you don't abuse/misuse 
> it unnecessarily.
>
> Cal
>
> On Wed, Jan 2, 2013 at 11:29 AM, George Lund <gl...@mintel.com<javascript:>
> > wrote:
>
>> I'm trying to bulk-delete several million rows from my database.
>>
>> The docs for Django 
>> 1.3<https://docs.djangoproject.com/en/1.3/topics/db/queries/#deleting-objects>say
>>  "this will, whenever possible, be executed purely in SQL". A pure-SQL 
>> delete is what I want in this case, so that's fine.
>>
>> However, the code is never getting as far as running any SQL.
>>
>> Interrupting the script shows that the delete method on the QuerySet is 
>> trying to use a "Collector" to construct model instances for each row I'm 
>> trying to delete. This is going to take too long (and may in fact consume 
>> all the memory available) -- I don't think it's practical to wait in this 
>> case. (I've tried waiting over half an hour!)
>>
>> (I'm looking at django.db.models.query.QuerySet.delete and 
>> django.db.models.deletion.Collector.collect 
>> / Collector.add.)
>>
>> What's the point in doing the delete "purely in SQL" if all of the 
>> objects are getting constructed anyway? Why do they need to be "collected" 
>> before the SQL DELETE is run? The model instance in this case has no 
>> child rows, to which the delete might need to be cascaded.
>>
>> Meanwhile I can construct the SQL by hand easily enough, but I feel this 
>> isn't doing things the right way.
>>
>> thanks for any help
>>
>> George
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Django users" group.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msg/django-users/-/W4LqKzcnlaYJ.
>> To post to this group, send email to django...@googlegroups.com<javascript:>
>> .
>> To unsubscribe from this group, send email to 
>> django-users...@googlegroups.com <javascript:>.
>> 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 view this discussion on the web visit 
https://groups.google.com/d/msg/django-users/-/q1ZxexzIdX8J.
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