Пожалуйста, прочитайте Маршрутизация Явных объединений / заявлений в коллекции с нетерпением загруженной . Затем, используя contains_eager
, вы можете структурировать свой запрос и получить именно то, что хотите:
authors = (
session.query(Author)
.join(Author.books)
.options(contains_eager(Author.books)) # tell SA that we load "all" books for Authors
.filter(Book.title.like('%SQL%'))
).all()
Обратите внимание, что вы фактически обманываете sqlalchemy, думая, что он загрузил всю коллекцию Author.books
, и поэтому ваша сессия узнает false
информацию о реальном состоянии мира.