15
我知道我可以使用别名标签的方法,但我无法弄清楚如何使用标记元素后在查询 - 类似如下:蟒蛇SQLAlchemy的标签使用
session.query(Foo.bar.label("foobar")).filter(foobar > 10).all()
当然,这是行不通的,因为没有变量叫做foobar。这怎么可能完成?
(过度简化的例子只是为了方便理解...)
我知道我可以使用别名标签的方法,但我无法弄清楚如何使用标记元素后在查询 - 类似如下:蟒蛇SQLAlchemy的标签使用
session.query(Foo.bar.label("foobar")).filter(foobar > 10).all()
当然,这是行不通的,因为没有变量叫做foobar。这怎么可能完成?
(过度简化的例子只是为了方便理解...)
随口说说,我相信你可以使用自己的标记列的表达式:
foobar = Foo.bar.label("foobar")
session.query(foobar).filter(foobar > 10).all()
只要把foobar的引号。它会为order_by
这样工作的:
session.query(Foo.bar.label("foobar")).order_by('foobar').all()
对于过滤器,你可以使用原始SQL条件:
session.query(Foo.bar.label("foobar")).filter("foobar > 10").all()
这并不适用于我(对于过滤器来说)。 – Ofir 2013-03-21 20:53:26
如何将过滤条件放入原始sql?我已经更新了答案。希望有所帮助。 – alecxe 2013-03-21 21:02:35
尽管这可能有效(我还没有尝试过),但我的谓词包含日期,并且这些字符串在某些数据库中的字符串效果不佳 – Ofir 2013-03-22 20:41:33