Выбор отдельных значений столбцов в SQLAlchemy / Elixir - PullRequest
38 голосов
/ 01 февраля 2010

В небольшом скрипте, который я пишу с использованием SQLAlchemy и Elixir, мне нужно получить все отдельные значения для определенного столбца. В обычном SQL это было бы просто

SELECT DISTINCT `column` FROM `table`;

и я знаю, что могу просто выполнить этот запрос "вручную", но я бы предпочел придерживаться декларативного синтаксиса SQLAlchemy (и / или Elixir), если смогу Я уверен, что это возможно, я даже видел намеки на подобные вещи в документации по SQLAlchemy, но я часами изучал эту документацию (как и Elixir), и просто не могу кажется, на самом деле выяснить, как это будет сделано. Так чего мне не хватает?

Ответы [ 3 ]

78 голосов
/ 01 февраля 2010

Вы можете запросить свойства столбца сопоставленных классов, и у класса Query есть генеративный distinct() метод:

for value in Session.query(Table.column).distinct():
     pass
4 голосов
/ 01 марта 2016

Для этого класса:

class Assurance(db.Model):
    name = Column(String)

Вы можете сделать это:

assurances = []
for assurance in Assurance.query.distinct(Assurance.name):
    assurances.append(assurance.name)

и у вас будет список различных значений

2 голосов
/ 15 февраля 2012
for user in session.query(users_table).distinct():
    print user.posting_id
...