Освойте 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-разработчик». Программа рассчитана на новичков без опыта программирования и технического образования. Курс проходит в формате записанных коротких видеолекций. Будет много проверочных заданий и мастер-классов. В конце каждой недели — живая встреча с экспертами в разработке для ответов на вопросы и разбора домашек.
Добавить комментарий