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

Метод with_only_columns

Метод with_only_columns класса Select заменяет список столбцов, которые выбираются в запросе. Он принимает произвольное количество столбцов или сущностей и возвращает новый объект Select с обновленным списком колонок. Метод удобен, когда нужно переопределить набор выбираемых полей, не создавая запрос заново.

Синтаксис

select.with_only_columns(*entities)

Пример

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

from sqlalchemy import create_engine, select, Table, Column, Integer, String, MetaData 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) stmt = stmt.with_only_columns(articles.c.title) print(stmt)

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

"SELECT articles.title FROM articles"

Пример

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

from sqlalchemy import create_engine, select, Table, Column, Integer, String, MetaData 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.text) stmt = stmt.with_only_columns(articles.c.id, articles.c.title) print(stmt)

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

"SELECT articles.id, articles.title FROM articles"

Пример

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

from sqlalchemy import create_engine, select, Table, Column, Integer, String, MetaData 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), ) metadata.create_all(engine) with engine.connect() as conn: conn.execute(articles.insert(), [ {'title': 'article 1', 'text': 'text 1', 'status': 'active', 'num': 1}, {'title': 'article 2', 'text': 'text 2', 'status': 'draft', 'num': 2}, ]) conn.commit() stmt = select(articles) stmt = stmt.with_only_columns(articles.c.title) with engine.connect() as conn: res = conn.execute(stmt) print(res.fetchall())

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

[('article 1',), ('article 2',)]

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

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