Eager loading и lazy loading в SQLAlchemy отличаются подходом к загрузке связанных данных. 2
Lazy loading предполагает, что объекты возвращаются из запроса без начальной загрузки связанных объектов. 3 Когда к связанному объекту впервые обращаются, для доступа к нему генерируются дополнительные операторы SELECT. 3 Это стандартная техника загрузки в SQLAlchemy. 3
Eager loading означает, что объекты возвращаются из запроса с уже загруженной связанной коллекцией или скалярной ссылкой. 1 ORM достигает этого, добавляя в оператор SELECT JOIN для одновременной загрузки связанных строк или генерируя дополнительные операторы SELECT после основного для загрузки коллекций или скалярных ссылок сразу. 1
Таким образом, eager loading полезна, когда нужно загрузить информацию обо всех или многих дочерних объектах вместе с родительским объектом. 3 Lazy loading же выгодна, когда не нужно все связанные данные сразу. 2