python sqlalchemy label usage

2019-01-23 14:50发布

问题:

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()