2011-05-30 33 views
2

我需要生成這樣的查詢:帶postgres的Sqlalchemy。儘量讓「DISTINCT ON」,而不是「獨特」

SELECT **DISTINCT ON** (article.code) article.code, article.title 

首先,我嘗試通過ORM不同的方法,使之與域發送列表。但它不會工作。第二,我嘗試通過sqlalchemy.sql.select使它 - 它也生成SQL查詢是這樣的:

SELECT DISTINCT article.code, article.title 

我需要SELECT **DISTINCT ON** (article.code) ...

我看源代碼,並在sqlalchemy.dialects.postgresql.base.PGCompiler.get_select_precolumns代碼中發現用於生成如下結構:'DISTINCT ON' 但是這種方法不會被調用。而不是這稱爲另一種方法 - sqlalchemy.sql.compiler.get_select_precolumns - 它沒有代碼生成DISTINCT ON只爲DISTINCT也許我應該配置我的會話調用正確的方法?

回答

1

This bug report表明DISTINCT ON在SQLAlchemy 0.7+中正常工作。我認爲升級是有序的,除非你在0.7版本中發現了一個bug。

解決方法。 。 。

  • 志願者幫助獲得0.7包 準備好Ubuntu。
  • Download並從 安裝源。
  • 重寫查詢以避免DISTINCT ON。在最常見的情況下,我不確定這是否可能是 。
+0

的Ubuntu 10.10還沒有0.7版本回購:( – exabiche 2011-05-30 11:43:47

+1

也許你可以自願幫助該更新。:-) – 2011-05-30 11:46:02

+0

你可以用'PIP安裝SQLAlchemy的--upgrade'。使用'pip'可以使您獨立於系統的包裝,其中通常是過時/不是非常流行的Python庫版本:-) – 2012-01-06 10:42:10

相關問題