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

Метод scalar класса Session

Метод scalar класса Session выполняет SQL-запрос и возвращает значение первого столбца первой строки результата. Если строк нет, метод возвращает None. Первым параметром метод принимает запрос или SQL-выражение, далее могут передаваться параметры запроса.

Синтаксис

session.scalar(statement, [params])

Пример

Давайте создадим сессию и таблицу, а затем получим количество строк через метод scalar:

from sqlalchemy import create_engine, text from sqlalchemy.orm import Session engine = create_engine('sqlite:///:memory:') with Session(engine) as session: session.execute(text('CREATE TABLE articles (id INTEGER, title TEXT)')) session.execute(text("INSERT INTO articles (id, title) VALUES (1, 'article 1')")) session.execute(text("INSERT INTO articles (id, title) VALUES (2, 'article 2')")) session.commit() res = session.scalar(text('SELECT COUNT(*) FROM articles')) print(res)

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

2

Пример

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

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

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

"article 1"

Пример

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

from sqlalchemy import create_engine, text from sqlalchemy.orm import Session engine = create_engine('sqlite:///:memory:') with Session(engine) as session: session.execute(text('CREATE TABLE articles (id INTEGER, title TEXT)')) session.execute(text("INSERT INTO articles (id, title) VALUES (1, 'article 1')")) session.execute(text("INSERT INTO articles (id, title) VALUES (2, 'article 2')")) session.commit() res = session.scalar( text('SELECT title FROM articles WHERE id = :id'), {'id': 2} ) print(res)

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

"article 2"

Пример

Давайте рассмотрим поведение метода, когда подходящих строк в таблице нет:

from sqlalchemy import create_engine, text from sqlalchemy.orm import Session engine = create_engine('sqlite:///:memory:') with Session(engine) as session: session.execute(text('CREATE TABLE articles (id INTEGER, title TEXT)')) session.commit() res = session.scalar(text('SELECT title FROM articles WHERE id = :id'), {'id': 1}) print(res)

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

None

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

  • класс Session,
    который представляет сессию работы с базой
  • метод execute,
    который выполняет запрос и возвращает результат
  • метод scalars,
    который возвращает первый столбец всех строк
  • метод scalar_one,
    который требует ровно одну строку в результате
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить