Я делаю массовое создание, чтобы выгрузить много информации в базу данных одновременно. Информация является многоуровневой - я создаю верхний слой, затем использую данные в качестве отношений для следующего слоя и т. Д. Я не могу использовать PostgreSQL, поэтому я не могу воспользоваться его способностью возвращать первичные ключи при выполнении массовых операций. создать.
Вместо этого я создаю UUID и вставляю его в каждый слой, а затем использую его для захвата только что созданных строк, чтобы я мог использовать их для следующего слоя. Приглушенная модель выглядит так:
class Container(Component):
parent = models.ForeignKey('self', related_name='children', null=True, blank=True, on_delete=models.CASCADE)
bulk_insert_id = models.UUIDField(default=uuid.uuid4)
и массовое создание / запрос того, что я только что создал, выглядит следующим образом:
bulk_insert_id = uuid.uuid4()
requirements = []
for requirement, child in zip(self.component['children'], self.children):
r = models.Container(
parent=self.db,
bulk_insert_id=bulk_insert_id,
)
child.db_id = r
requirements.append(r)
models.Container.objects.bulk_create(requirements)
requirements = models.Container.objects.filter(bulk_insert_id=bulk_insert_id)
Проблема, с которой я сталкиваюсь, заключается в том, что когда я на самом деле использую эти элементы, я нахожу их дубликаты. Это как если бы копия была вставлена массовым созданием, а затем я создаю другую копию, когда я впервые получаю к ней доступ / сохраняю данные. Вот пример скриншота из SSMS:

Как видно из изображения выше, последние две строки являются копиями первых двух строк. Есть идеи, откуда эти дубликаты?
Инструменты:
- SQL Server
- Джанго 1,11
- django-pyodbc-azure 1.11.0.0