Обращение к позициям заказа после выхода из сессии SQLAlchemy падает с ошибкой
def get_order(order_id):
with Session(engine) as session:
return session.get(Order, order_id)
order = get_order(17)
print(order.status) # работает
print(len(order.items)) # DetachedInstanceError
items — связь «один ко многим» с ленивой загрузкой по умолчанию. Почему первая строка работает, а вторая падает, и как правильно?
- items грузится отдельным запросом при обращении, а сессия уже закрыта
- status хранится в кэше Python, а items — только в базе
- session.get не загружает связанные объекты, их нельзя получить никак
- len() нельзя вызывать у коллекций ORM, нужно items.count()
