django database delete specific number of entries
Question:
How to delete specific number of entries from the database?
I did something like this
EntriesToDelete=Statusmessages.objects.filter(time__lt=date)[:30000]
EntriesToDelete.delete()
But I get an error which says:
AssertionError. Cannot use 'limit' or 'offset' with delete
.
How can I specify the number of entries to be deleted.
Answers:
You could do it like this:
Statusmessages.objects.filter(pk__in=Statusmessages.objects.filter(time__lt=date).values_list('pk')[:30000]).delete()
use this:
Statusmessages.objects.filter(pk__in=Statusmessages.objects.filter(time__lt=date).values_list('pk', flat=True)[:30000]).delete()
use flat=True
, if not then is a tuple and raise exception:
{NotSupportedError}(1235, "This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'")
How to delete specific number of entries from the database?
I did something like this
EntriesToDelete=Statusmessages.objects.filter(time__lt=date)[:30000]
EntriesToDelete.delete()
But I get an error which says:
AssertionError. Cannot use 'limit' or 'offset' with delete
.
How can I specify the number of entries to be deleted.
You could do it like this:
Statusmessages.objects.filter(pk__in=Statusmessages.objects.filter(time__lt=date).values_list('pk')[:30000]).delete()
use this:
Statusmessages.objects.filter(pk__in=Statusmessages.objects.filter(time__lt=date).values_list('pk', flat=True)[:30000]).delete()
use flat=True
, if not then is a tuple and raise exception:
{NotSupportedError}(1235, "This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'")