Освойте Python на курсе от Skypro. Вас ждут 400 часов обучения и практики (достаточно десяти часов в неделю), подготовка проектов для портфолио, индивидуальная проверка домашних заданий и помощь опытных наставников. Получится, даже если у вас нет опыта в IT.
Часто возникает необходимость сортировать результаты запроса в базу данных в обратном порядке — по убыванию. В SQLAlchemy для этого используется метод order_by(). Он принимает в качестве аргумента выражение, по которому будет осуществляться сортировка.
Вот пример запроса, в котором результаты отсортированы по полю amount в возрастающем порядке:
query = (model.Session.query(model.Entry)
    .join(model.ClassificationItem)
    .join(model.EnumerationValue)
    .filter_by(id=c.row.id)
    .order_by(model.Entry.amount)
)
Однако, если попытаться сортировать результаты в обратном порядке, то есть по убыванию, используя следующий код:
.order_by(desc(model.Entry.amount))
вы получите ошибку: NameError: global name 'desc' is not defined. Это происходит потому, что функция desc() не была импортирована, и поэтому не определена в текущем контексте.
Чтобы исправить это, необходимо импортировать функцию desc() из модуля sqlalchemy. Это можно сделать, добавив следующую строку в начало файла:
from sqlalchemy import desc
Теперь можно использовать desc() в методе order_by(), чтобы сортировать результаты запроса по убыванию. Итак, весь запрос будет выглядеть так:
from sqlalchemy import desc
query = (model.Session.query(model.Entry)
    .join(model.ClassificationItem)
    .join(model.EnumerationValue)
    .filter_by(id=c.row.id)
    .order_by(desc(model.Entry.amount)) # результаты отсортированы по убыванию
)
В этом коде desc(model.Entry.amount) означает, что результаты запроса будут отсортированы по полю amount в порядке убывания. 
Таким образом, для сортировки результатов запроса по убыванию в SQLAlchemy нужно использовать функцию desc(), не забыв при этом ее импортировать.
Изучайте Python на онлайн-курсе от Skypro «Python-разработчик». Программа рассчитана на новичков без опыта программирования и технического образования. Курс проходит в формате записанных коротких видеолекций. Будет много проверочных заданий и мастер-классов. В конце каждой недели — живая встреча с экспертами в разработке для ответов на вопросы и разбора домашек.
                    
                                            Перейти в телеграм, чтобы получить результаты теста
                                        





            
            
        
                    Забрать
Добавить комментарий