我以this爲例來幫助我學習sqlalchemy。下面是MySQL數據庫:如何在sqlalchemy中表示此查詢?
select f.type, f.variety, f.price
from (
select type, min(price) as minprice
from fruits group by type
) as x inner join fruits as f on f.type = x.type and f.price = x.minprice;
這是我到目前爲止有:
s = Session()
sq = s.query(func.min(fruit.price)).group_by(fruit.type).subquery()
ans = s.query(fruit).join(sq, fruit.price==sq.c.price).all()
,但它顯然是行不通的。我甚至關閉?
我一直在傾注這些docs。 price
是一個PK,如果有幫助..也許我需要一個別名或別的東西。任何幫助或方向表示讚賞。
謝謝。多謝。我得到一個「水果沒有屬性c」的錯誤,所以我認爲你的意思是'fruit.type',而不是'fruit.c.type'等。如果不是,我想知道你的SA版本是什麼正在使用。 (關於附註,你是絕對正確的,我打算把我在這裏學到的東西應用到一個更復雜的查詢中,該查詢選擇了最大的'fruit.id',這確實是一個int和PK。) – Paul
我認爲在我的例子中'fruit'是一個'Table',而在你的例子中它可能是一個模型類。從你的模型類中,你可以通過做'fruit.__ table__'來獲得一個表格。 – van
@van:從模型類獲取表格只適用於聲明模型;公共接口是'sqlalchemy.orm.attributes.manager_of_class(MAPPED_CLASS).mapper.mapped_table',它可以在任何映射類上工作,不管它們是如何定義的。 – SingleNegationElimination