我有一個Django的模型管理器下面的註解,我想轉換爲SQLAlchemy的ORM查詢:SQLAlchemy的轉換註釋
annotations = {
'review_count' : Count("cookbookreview", distinct=True),
'rating' : Avg("cookbookreview__rating")
}
return self.model.objects.annotate(**annotations)
我本質上需要的是查詢中的每個模型對象有作爲初始查詢的一部分附加到它們的review_count
和rating
。我相信我可以使用column_property
,但我想避免這種類型的「計算屬性」對象,因爲我不想爲每個對象完成屬性(昂貴的查找),當我訪問模板中的屬性。
解決此問題的正確方法是什麼?提前致謝。
恕我直言,Django註釋和聚合是非常不一致的黑客。 SQLAlchemy比Django ORM更強大,基本上,您可以以可重用和參數化的方式掌握SQL的全部功能。 –
謝謝,但Django ORM聚合/註釋在這裏解決的問題仍然需要在SQLAlchemy中解決。由於它的功能非常強大,我認爲這種查詢可以相對容易地完成。儘管如此,我還是無法弄清楚。 – patrickn
您可以使用SqlSoup來映射任何sqlalchemy.sql.select。 –