我知道我可以将标签方法用于别名,但我无法弄清楚如何在查询中使用带标签的元素 - 如下所示:
session.query(Foo.bar.label("foobar")).filter(foobar > 10).all()
当然,由于没有名为foobar的变量,因此无法正常工作。怎么能实现呢?
(过于简化的例子只是为了易于理解......)
答案 0 :(得分:29)
另一方面,我相信您可以将标记列本身用作表达式:
foobar = Foo.bar.label("foobar")
session.query(foobar).filter(foobar > 10).all()
答案 1 :(得分:13)
把foobar放在引号中。它会像order_by
这样工作:
session.query(Foo.bar.label("foobar")).order_by('foobar').all()
对于过滤器,您可以使用原始SQL条件:
session.query(Foo.bar.label("foobar")).filter("foobar > 10").all()