Django bulk_create возможные исключения - PullRequest
0 голосов
/ 29 октября 2018

При использовании Model.objects.bulk_create(), если во время вставки возникает исключительная ситуация, выполняется ли откат всей операции или продолжается работа с неконфликтующими записями, и есть ли способ узнать, какие записи были вставлены, а какая вызвала ошибку?

1 Ответ

0 голосов
/ 29 октября 2018

В случае возникновения исключения вся операция будет откатана. Если вы посмотрите на исходный код , то увидите, что все операции с базами данных заключены в transaction.atomic().

Нет способа узнать, какие ценности вызвали конфликт. Такая информация может быть доступна в сообщении об ошибке для конкретной базы данных, но это не является частью API.

Обратите внимание, что начиная с Django 2.2 появится параметр ignore_conflicts, который позволит вам явно контролировать, будет ли операция откатываться или конфликты будут игнорироваться.

...