Все ли запросы, выполняемые в рамках одного запроса 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 по умолчанию выполняет каждый запрос в своей собственной транзакции, что означает, что он изолирован для чтения.

Другие вопросы по тегам