Функция label
Функция label присваивает псевдоним
столбцу или выражению в SQL-запросе. Первым
параметром передаётся имя псевдонима, а
вызывается она как метод у объекта столбца
или выражения. В итоговом SQL-запросе
псевдоним выводится после ключевого слова
AS.
Синтаксис
column.label(name)
Пример
Давайте создадим таблицу и присвоим
псевдоним столбцу title:
from sqlalchemy import Table, Column, Integer, String, MetaData, select
metadata = MetaData()
articles = Table(
'articles', metadata,
Column('id', Integer, primary_key=True),
Column('title', String),
Column('text', String)
)
stmt = select(articles.c.title.label('article_title'))
print(stmt)
Итоговый SQL запрос:
SELECT articles.title AS article_title
FROM articles
Пример
Давайте присвоим псевдоним результату
агрегатной функции count:
from sqlalchemy import Table, Column, Integer, String, MetaData, select, func
metadata = MetaData()
articles = Table(
'articles', metadata,
Column('id', Integer, primary_key=True),
Column('title', String),
Column('text', String)
)
stmt = select(func.count(articles.c.id).label('total'))
print(stmt)
Итоговый SQL запрос:
SELECT count(articles.id) AS total
FROM articles
Пример
Давайте присвоим псевдоним нескольким столбцам одновременно и выполним запрос:
from sqlalchemy import Table, Column, Integer, String, MetaData, select
metadata = MetaData()
articles = Table(
'articles', metadata,
Column('id', Integer, primary_key=True),
Column('title', String),
Column('text', String)
)
stmt = select(
articles.c.id.label('article_id'),
articles.c.title.label('article_title')
)
print(stmt)
Итоговый SQL запрос:
SELECT articles.id AS article_id, articles.title AS article_title
FROM articles
Пример
Давайте используем псевдоним для доступа
к результату запроса по имени через
атрибут label:
<+python+>
from sqlalchemy import Table, Column, Integer, String, MetaData, select, create_engine
metadata = MetaData()
articles = Table(
'articles', metadata,
Column('id', Integer, primary_key=True),
Column('title', String),
Column('text', String)
)
engine = create_engine('sqlite:///:memory:')
metadata.create_all(engine)
with engine.connect() as conn:
conn.execute(articles.insert(), [
{'id': 1, 'title': 'article', 'text': 'text 1'},
{'id': 2, 'title': 'user', 'text': 'text 2'}
])
stmt = select(articles.c.title.label('article_title'))
res = conn.execute(stmt).all()
print(res)
<-python+>
Результат выполнения кода:
[('article',), ('user',)]
Смотрите также
-
функцию
column,
которая создаёт объект столбца таблицы -
функцию
func,
которая создаёт вызов SQL-функции -
функцию
func.count,
которая считает количество строк -
функцию
desc,
которая задаёт сортировку по убыванию