Как сравнивать объекты в sqlalchemy заданном порядке order_by? - PullRequest
0 голосов
/ 25 февраля 2020

Предположим, у меня есть запрос с определенным порядком по выражению, скажем, например:

session.query(Object).order_by(Object.column_a.asc(), Object.column_b.asc())

Теперь я задал другой объект и хотел бы отфильтровать запрос, чтобы он содержал все объекты, которые больше указанного , Обычно я бы написал:

pivot = session.query(Object).filter(
        Object.id == id_
    ).subquery('pivot')
session.query(Object).filter(
        tuple_(Object.column_a, Object.column_b) >= tuple_(pivot.c.column_a, pivot.c.column_b)
)

Как можно динамически изменять запрос? Я пытался создать условия типа or_(Object.column_a > pivot.column_a, and_(Object.column_a == pivot.column_a, Object.column_b > pivot.column_b)), но это слишком сложно, если список order_by длинный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...