#django #orm
#django #orm
Вопрос:
Моему веб-приложению требуется массивная загрузка из файлов csv. Файлы могут содержать ошибки ссылок. Как я могу сохранить «мягко» каждую строку и откатить все сохраненные записи в случае возникновения ошибки?
Я использую команду django.
Ответ №1:
Вы должны захотеть использовать транзакции, чтобы гарантировать атомарность базы данных.
Таким образом, вы можете настроить сохранение вашего блока кода в базе данных только в том случае, если весь блок успешно завершен. Если возникнет какое-либо исключение, транзакция будет откатана.
Смотрите этот пример кода:
from django.db import transaction
def your_command_func():
# This code executes in autocommit mode (Django's default).
do_stuff()
with transaction.atomic():
# This block of code executes inside a transaction.
line = read_from_csv()
has_error = validate_line(line)
if has_error:
raise YourException("something went wrong.")
Комментарии:
1. Идеальный ответ, братан. Спасибо.