Все ли запросы, выполняемые в рамках одного запроса Django, работают с одним и тем же снимком БД?
Документация Django по управлению транзакциями фокусируется на операциях записи. Я озадачен тем, что гарантирует Django на последовательность чтения. Если один запрос выполняет несколько запросов на чтение, а второй запрос записывает в базу данных между этими запросами, есть ли гарантия, что первый запрос не увидит изменений?
Чтобы проиллюстрировать вопрос на простом примере:
c1 = select count(*) from Users
<--- here User added by some other request
c2 = select count(*) from Users
assert c1 == c2 <-- Is this always true?
Если такой гарантии нет, возможно ли добиться такой изоляции?
1 ответ
Джанго не занимается гарантией этих вещей: все зависит от базы данных. Но Django по умолчанию выполняет каждый запрос в своей собственной транзакции, что означает, что он изолирован для чтения.