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