Отфильтровывать наностроки в определенном столбце

Пожалуйста, прочитайте Маршрутизация Явных объединений / заявлений в коллекции с нетерпением загруженной . Затем, используя 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 информацию о реальном состоянии мира.

15
задан piRSquared 20 June 2017 в 21:04
поделиться