Использование меток sqlalchemy python

Я знаю, что я могу использовать метод меток для псевдонима, но я не могу понять, как использовать помеченный элемент позже в запросе - что-то вроде следующего:

session.query(Foo.bar.label("foobar")).filter(foobar > 10).all()

Конечно, это не работает, поскольку нет переменной, называемой foobar. Как это можно сделать?

(Более упрощенный пример был просто для легкого понимания...)

Ответы

Ответ 1

Небрежно, я считаю, что вы можете использовать помеченный столбец как выражение:

foobar = Foo.bar.label("foobar")
session.query(foobar).filter(foobar > 10).all()

Ответ 2

Просто поставьте foobar в кавычки. Он будет работать для order_by следующим образом:

session.query(Foo.bar.label("foobar")).order_by('foobar').all()

Для фильтра вы можете использовать исходные условия sql:

session.query(Foo.bar.label("foobar")).filter("foobar > 10").all()