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

Метод first класса ScalarResult

Метод first класса ScalarResult возвращает первую строку из результата запроса или None, если результат пуст. Метод не принимает параметров. Он удобен, когда нужно получить только одну запись без проверки наличия остальных строк.

Синтаксис

ScalarResult.first()

Пример

Давайте создадим модель Article и получим первую строку из таблицы articles:

from sqlalchemy import create_engine, String, select from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, Session class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(primary_key=True) title: Mapped[str] = mapped_column(String(100)) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with Session(engine) as session: session.add_all([ Article(title='article 1'), Article(title='article 2'), Article(title='article 3'), ]) session.commit() res = session.scalars(select(Article.title)) print(res.first())

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

"article 1"

Пример

Давайте проверим поведение метода first, когда результат запроса пуст:

from sqlalchemy import create_engine, String, select from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, Session class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(primary_key=True) title: Mapped[str] = mapped_column(String(100)) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with Session(engine) as session: res = session.scalars(select(Article.title)) print(res.first())

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

None

Пример

Давайте получим первую строку с помощью метода first и сравним её с результатом метода all:

from sqlalchemy import create_engine, String, select from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, Session class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(primary_key=True) title: Mapped[str] = mapped_column(String(100)) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with Session(engine) as session: session.add_all([ Article(title='article 1'), Article(title='article 2'), ]) session.commit() res = session.scalars(select(Article.title)) print(res.first()) print(res.all())

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

"article 1" ['article 2']

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

  • класс ScalarResult,
    который представляет результат скалярного запроса
  • метод all,
    который возвращает все строки результата
  • метод one,
    который возвращает ровно одну строку результата
  • метод one_or_none,
    который возвращает одну строку или None
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить