That's an interesting perspective actually..

"Don't be a slave of your mind (or ORM)"

Cal

On Wed, Jan 2, 2013 at 12:01 PM, Larry Martell <larry.mart...@gmail.com>wrote:

> On Wed, Jan 2, 2013 at 4:29 AM, George Lund <gl...@mintel.com> wrote:
> > I'm trying to bulk-delete several million rows from my database.
> >
> > The docs for Django 1.3 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.
>
> I've had this discussion with other developers. Many feel they need to
> slavishly adhere to the ORM and if you don't you're some type of evil
> entity. I could not disagree more. Django and the ORM are tools, and
> should be used only when they are the right tools for the job. I'd
> just go ahead and do the delete in SQL.
>
> --
> 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