#27385 closed Bug (fixed)
Error in QuerySet.bulk_create() on PostgreSQL when objs length is a multiple plus one of batch_size
Reported by: | David Barragán Merino | Owned by: | nobody |
---|---|---|---|
Component: | Database layer (models, ORM) | Version: | 1.10 |
Severity: | Release blocker | Keywords: | |
Cc: | Triage Stage: | Ready for checkin | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description (last modified by )
With the model:
from django.db import models class TestModel(models.Model): number = models.IntegerField()
If I try to do this on PostgreSQL:
objs = [TestModel(number=n) for n in range(11)] TestModel.objects.bulk_create(objs, batch_size=10)
I get this error:
/home/bameda/.virtualenvs/taiga/lib/python3.5/site-packages/django/db/models/manager.py in manager_method(self, *args, **kwargs) 83 def create_method(name, method): 84 def manager_method(self, *args, **kwargs): ---> 85 return getattr(self.get_queryset(), name)(*args, **kwargs) 86 manager_method.__name__ = method.__name__ 87 manager_method.__doc__ = method.__doc__ /home/bameda/.virtualenvs/taiga/lib/python3.5/site-packages/django/db/models/query.py in bulk_create(self, objs, batch_size) 450 if objs_without_pk: 451 fields = [f for f in fields if not isinstance(f, AutoField)] --> 452 ids = self._batched_insert(objs_without_pk, fields, batch_size) 453 if connection.features.can_return_ids_from_bulk_insert: 454 assert len(ids) == len(objs_without_pk) /home/bameda/.virtualenvs/taiga/lib/python3.5/site-packages/django/db/models/query.py in _batched_insert(self, objs, fields, batch_size) 1062 inserted_id = self._insert(item, fields=fields, using=self.db, return_id=True) 1063 if len(objs) > 1: -> 1064 inserted_ids.extend(inserted_id) 1065 if len(objs) == 1: 1066 inserted_ids.append(inserted_id) TypeError: 'int' object is not iterable
The patch https://github.com/django/django/pull/7433 solved it.
It happens in master and in 1.10.x
Change History (3)
comment:1 by , 8 years ago
Description: | modified (diff) |
---|---|
Severity: | Normal → Release blocker |
Summary: | Error in bulk_create() when objs length is a multiple plus one of batch_size → Error in QuerySet.bulk_create() on PostgreSQL when objs length is a multiple plus one of batch_size |
Triage Stage: | Unreviewed → Ready for checkin |
comment:2 by , 8 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Note:
See TracTickets
for help on using tickets.
In b3bd3aa: