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

Метод scalars

Метод scalars класса Result возвращает объект ScalarResult, который позволяет перебирать первый столбец каждой строки результата. Метод не принимает параметров. Он удобен, когда запрос возвращает одну колонку, либо когда нужна только первая колонка из каждой строки.

Синтаксис

res.scalars()

Пример

Давайте выполним запрос, возвращающий одну колонку, и переберем результаты через scalars:

from sqlalchemy import create_engine, text engine = create_engine('sqlite:///:memory:') with engine.connect() as conn: conn.execute(text('CREATE TABLE articles (id INTEGER, title TEXT)')) conn.execute(text("INSERT INTO articles (id, title) VALUES (1, 'article 1')")) conn.execute(text("INSERT INTO articles (id, title) VALUES (2, 'article 2')")) conn.commit() res = conn.execute(text('SELECT title FROM articles ORDER BY id')) for title in res.scalars(): print(title)

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

"article 1" "article 2"

Пример

Если запрос возвращает несколько колонок, scalars вернет только значения первой колонки:

<+python+> from sqlalchemy import create_engine, text engine = create_engine('sqlite:///:memory:') with engine.connect() as conn: conn.execute(text('CREATE TABLE articles (id INTEGER, title TEXT)')) conn.execute(text("INSERT INTO articles (id, title) VALUES (1, 'article 1')")) conn.execute(text("INSERT INTO articles (id, title) VALUES (2, 'article 2')")) conn.commit() res = conn.execute(text('SELECT id, title FROM articles ORDER BY id')) for value in res.scalars(): print(value) <-python+>

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

1 2

Пример

Давайте применим scalars вместе с ORM для выборки объектов модели:

from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(primary_key=True) title: Mapped[str] text: Mapped[str] status: Mapped[str] num: Mapped[int]
from sqlalchemy import create_engine, select from sqlalchemy.orm import Session from models import Base, Article engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with Session(engine) as session: session.add_all([ Article(title='article 1', text='text 1', status='new', num=1), Article(title='article 2', text='text 2', status='new', num=2), ]) session.commit() res = session.execute(select(Article).order_by(Article.id)) for article in res.scalars(): print(article.title)

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

"article 1" "article 2"

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

  • класс Result,
    который представляет результат выполнения запроса
  • метод scalar,
    который возвращает одно скалярное значение
  • метод scalar_one,
    который возвращает ровно одно скалярное значение
  • метод scalar_one_or_none,
    который возвращает одно значение или None
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить