Что такое Identity Map в паттерне Data Mapper в SQLAlchemy? Как этот механизм гарантирует, что два разных запроса к одной и той же строке базы данных в рамках одной сессии вернут ссылку на один и тот же объект в памяти Python?

Identity Map хранит соответствие ORM-идентичности и Python-объекта внутри Session. При загрузке той же строки SQLAlchemy использует уже присутствующий экземпляр, а не создаёт независимую копию.

Короткий ответ

Что ответить на собеседовании

Identity Map хранит соответствие ORM-идентичности и Python-объекта внутри Session. При загрузке той же строки SQLAlchemy использует уже присутствующий экземпляр, а не создаёт независимую копию.

Подробный разбор

Ответ с пояснениями

Identity Map хранит соответствие ORM-идентичности и Python-объекта внутри Session. При загрузке той же строки SQLAlchemy использует уже присутствующий экземпляр, а не создаёт независимую копию.

Ключ включает не только значение primary key, но и mapper, а в некоторых конфигурациях identity token. Обычный запрос может всё равно выполнить SQL: identity map не является кешем произвольных результатов запросов. Гарантия относится к объектам, связанным с этой Session; после expunge, закрытия или утраты weak reference жизненный цикл меняется. Другая Session обычно содержит другой экземпляр той же строки. Обновление атрибутов из БД регулируется expiration/refresh, поэтому идентичность объекта не равна вечной актуальности его данных.

Источник: docs.sqlalchemy.org.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее