0
0 комментариев

То есть например исполняется себе код, который должен изменить несколько разных моделей. Обязательно это разные модели. Например пять.

Предположим, что две модели он изменил, и выскочило исключение. Соответственно три модели остались недоделанными.

Как возможно откатить изменения в первых двух моделях, чтобы сохранить целостность вычислений?

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

Или в джанге транзакции по другому работают? В доке написано, что они замедляют работу программы, и желательно оборачивать в транзакции как можно меньшие участки.

Как лучше поступить? Может есть возможность отката с помощью питоновских исключений?

Немного поразбирал эту тему. Сделал некоторые выводы. Выяснил, что в sqlalchemy, вообщем-то используется этот же механизм, просто в джанго, в отличие от sqlalchemy, изначально включен автокоммит. Сам же уровень изолированности транзакций, настраивается в самой бд. Вообщем-то использовать транзакции с помощью джанго, это самый верный вариант. Да и, наименее затратный по времени. Просто надо их внедрять изначально, в стиль кодирования. Тогда толк будет хороший. И использоваться они будут наиболее оптимально.


Добавить комментарий