python sqlalchemy标签用法

Ofi*_*fir 19 python alias sqlalchemy

我知道我可以使用label方法作为别名,但我无法弄清楚如何在查询中使用带标签的元素 - 如下所示:

session.query(Foo.bar.label("foobar")).filter(foobar > 10).all()
Run Code Online (Sandbox Code Playgroud)

当然,这不起作用,因为没有名为foobar的变量.怎么可以实现呢?

(过于简化的例子只是为了便于理解...)

Eev*_*vee 31

另外,我相信您可以使用带标签的列本身作为表达式:

foobar = Foo.bar.label("foobar")
session.query(foobar).filter(foobar > 10).all()
Run Code Online (Sandbox Code Playgroud)


ale*_*cxe 14

把foobar放在引号中.它会order_by像这样工作:

session.query(Foo.bar.label("foobar")).order_by('foobar').all()
Run Code Online (Sandbox Code Playgroud)

对于过滤器,您可以使用原始sql条件:

session.query(Foo.bar.label("foobar")).filter("foobar > 10").all()
Run Code Online (Sandbox Code Playgroud)

  • 这对我没用(对于过滤器来说). (5认同)
  • 当使用“func.sum”时,这对我有用,而@Eevee的答案却没有。 (3认同)
  • @raven你可以像这样使用 'order_by(desc("quantity"))' (3认同)
  • 知道如何根据标记字段更改排序顺序吗?我在尝试 `query = query.order_by("changepct".asc())` 时收到错误 (2认同)