Sqlalchemy с postgres. Попробуйте включить «DISTINCT ON» вместо «DISTINCT» - PullRequest
3 голосов
/ 30 мая 2011

Мне нужно сгенерировать запрос следующим образом:

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 Ответ

2 голосов
/ 30 мая 2011

Этот отчет об ошибке предполагает, что DISTINCT ON работает правильно в SQLAlchemy 0.7+.Я думаю, что обновление в порядке, если вы не обнаружили ошибку в 0.7.

Обходные пути.,.

  • Доброволец, помогающий подготовить пакет 0.7 для Ubuntu.
  • Загрузите и установите из исходного кода.
  • Перепишите запросы, чтобы избежать DISTINCT ON.Я не уверен, возможно ли это в самом общем случае.
...