web-dev-qa-db-ja.com

python sqlalchemyラベルの使用

エイリアスにラベルメソッドを使用できることはわかっていますが、ラベル付き要素をクエリの後半で使用する方法がわかりません。たとえば、次のようになります。

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

もちろん、foobarと呼ばれる変数がないため、これは機能しません。どうすればこれを達成できますか?

(過度に単純化された例は、理解を容易にするためのものでした...)

20
Ofir

ラベルの付いた列自体を式として使用できると思います。

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

Foob​​arを引用符で囲んでください。 order_by このような:

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

フィルターには生のSQL条件を使用できます。

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