Функция desc
Функция desc создает выражение
для сортировки результатов SQL-запроса
по убыванию. Первым параметром функция
принимает столбец или выражение, по
которому будет происходить сортировка.
Функция часто используется в методе
order_by для упорядочивания
строк от большего значения к меньшему.
Синтаксис
desc(column)
Пример
Давайте создадим таблицу и отсортируем ее строки по убыванию идентификатора:
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, select, desc
engine = create_engine('sqlite:///:memory:')
metadata = MetaData()
articles = Table(
'articles', metadata,
Column('id', Integer, primary_key=True),
Column('title', String),
)
metadata.create_all(engine)
with engine.begin() as conn:
conn.execute(articles.insert(), [
{'id': 1, 'title': 'article 1'},
{'id': 2, 'title': 'article 2'},
{'id': 3, 'title': 'article 3'},
])
stmt = select(articles.c.title).order_by(desc(articles.c.id))
with engine.connect() as conn:
res = conn.execute(stmt).fetchall()
print(res)
Результат выполнения кода:
[('article 3',), ('article 2',), ('article 1',)]
Пример
Давайте отсортируем строки по убыванию строкового поля:
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, select, desc
engine = create_engine('sqlite:///:memory:')
metadata = MetaData()
articles = Table(
'articles', metadata,
Column('id', Integer, primary_key=True),
Column('title', String),
)
metadata.create_all(engine)
with engine.begin() as conn:
conn.execute(articles.insert(), [
{'id': 1, 'title': 'article'},
{'id': 2, 'title': 'user'},
{'id': 3, 'title': 'sqlite'},
])
stmt = select(articles.c.title).order_by(desc(articles.c.title))
with engine.connect() as conn:
res = conn.execute(stmt).fetchall()
print(res)
Результат выполнения кода:
[('user',), ('sqlite',), ('article',)]
Пример
Давайте посмотрим итоговый SQL-запрос,
который генерирует функция desc:
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, select, desc
engine = create_engine('sqlite:///:memory:')
metadata = MetaData()
articles = Table(
'articles', metadata,
Column('id', Integer, primary_key=True),
Column('title', String),
)
stmt = select(articles.c.title).order_by(desc(articles.c.id))
print(stmt)
Итоговый SQL запрос:
SELECT articles.title
FROM articles
ORDER BY articles.id DESC
Смотрите также
-
функцию
asc,
которая сортирует результаты по возрастанию -
функцию
nulls_first,
которая размещает NULL-значения в начале выборки -
функцию
nulls_last,
которая размещает NULL-значения в конце выборки -
функцию
distinct,
которая убирает дубликаты из результатов запроса