On Fri, Dec 4, 2009 at 3:44 PM, Daniel Roseman <dan...@roseman.org.uk> wrote:
> On Dec 4, 8:37 pm, Phlip <phlip2...@gmail.com> wrote:
>> Django users:
>>
>> I only ask the question to help improve my esthetics, but others might
>> need a performance boost here.
>>
>> How to delete every record in a table?
>>
>> A related question - how to delete every record matching a filter, out
>> of one internal SQL command?
>>
>> The brute-force way:
>>
>>   for p in Plutocrat.objects.all():  p.delete()
>>
>> Is there a way to do that in one method call? and could such a method
>> call only send one SQL command?
>>
>
> Yes:
> Plutocrat.objects.all().delete()

I found that quite slow. If you want to stay DB agnostic, I came up with this:

   from django.db import connection, transaction
   models = [Person, User, ...]
   cursor = connection.cursor()
   flush_tables = []
   for model in models:
       flush_tables.append(model._meta.db_table)
   statements = connection.ops.sql_flush(no_style(),
                               flush_tables,
                               connection.introspection.sequence_list())
   for statement in statements:
       cursor.execute(statement)
       transaction.commit_unless_managed()

I don't know of any bad side effects...

-Doug

> --
> DR.
>
> --
>
> You received this message because you are subscribed to the Google Groups 
> "Django users" group.
> To post to this group, send email to django-us...@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-us...@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