问题
I know I can use the label method for alias, but I can't figure out how to use the labeled element later in the query - something like the following:
session.query(Foo.bar.label("foobar")).filter(foobar > 10).all()
Of course, this doesn't work since there is no variable called foobar. How could this be accomplished?
(The over simplified example was just for easy comprehension...)
回答1:
Offhand, I believe you can use the labeled column itself as an expression:
foobar = Foo.bar.label("foobar")
session.query(foobar).filter(foobar > 10).all()
回答2:
Just put foobar in quotes. It'll work for order_by like this:
session.query(Foo.bar.label("foobar")).order_by('foobar').all()
For filter you can use raw sql conditions:
session.query(Foo.bar.label("foobar")).filter("foobar > 10").all()
来源:https://stackoverflow.com/questions/15555920/python-sqlalchemy-label-usage