РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
231 of 711 menu

Метод alias класса Select

Метод alias класса Select создает объект псевдонима, который представляет выборку как отдельную таблицу. Это позволяет использовать подзапрос в других запросах, обращаясь к его колонкам через атрибуты псевдонима. Первым параметром метод принимает имя псевдонима, вторым - флаг flat, который влияет на поведение при генерации SQL.

Синтаксис

select_stmt.alias(name, [flat])

Пример

Давайте создадим псевдоним для простой выборки из таблицы articles:

from sqlalchemy import create_engine, select, MetaData, Table, Column, Integer, String engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), Column('text', String), Column('status', String), Column('num', Integer) ) stmt = select(articles.c.id, articles.c.title).alias('a') print(stmt)

Результат выполнения кода:

"SELECT articles.id AS id, articles.title AS title \nFROM articles AS a"

Пример

Давайте используем псевдоним в качестве источника данных для основного запроса:

from sqlalchemy import create_engine, select, MetaData, Table, Column, Integer, String engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), Column('text', String), Column('status', String), Column('num', Integer) ) subq = select(articles.c.id, articles.c.title).alias('sub') stmt = select(subq.c.id, subq.c.title) with engine.connect() as conn: conn.execute(articles.insert().values(id=1, title='article', status='active', num=1)) res = conn.execute(stmt).fetchall() print(res)

Результат выполнения кода:

[(1, 'article')]

Пример

Давайте применим псевдоним вместе с условием where:

from sqlalchemy import create_engine, select, MetaData, Table, Column, Integer, String engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), Column('text', String), Column('status', String), Column('num', Integer) ) subq = select(articles.c.id, articles.c.title, articles.c.status).alias('sub') stmt = select(subq.c.id, subq.c.title).where(subq.c.status == 'active') with engine.connect() as conn: conn.execute(articles.insert().values(id=1, title='article', status='active', num=1)) conn.execute(articles.insert().values(id=2, title='user', status='draft', num=2)) res = conn.execute(stmt).fetchall() print(res)

Результат выполнения кода:

[(1, 'article')]

Смотрите также

  • класс Select,
    который представляет SELECT-запрос
  • метод subquery,
    который создает подзапрос из выборки
  • метод cte,
    который создает общее табличное выражение
  • метод select_from,
    который задает источник данных для запроса
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить