Sqlalchemy与postgres。尝试'DISTINCT ON'而不是'DISTINCT'

时间:2011-05-30 11:24:53

标签: postgresql sqlalchemy distinct

我需要生成如下查询:

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

首先,我尝试通过ORM distinct方法创建它并向其发送带字段的列表。但它不会工作。其次,我尝试通过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 个答案:

答案 0 :(得分:2)

This bug report表明DISTINCT ON在SQLAlchemy 0.7+中正常工作。我认为升级是有序的,除非你在0.7中发现了一个错误。

解决方法。 。

  • 志愿者帮助获得0.7包 为Ubuntu做好准备。
  • Download并安装自 源。
  • 重写查询以避免DISTINCT ON。我不确定是不是 在最一般的情况下是可能的。