Метод scalar класса Result
Метод scalar класса Result возвращает
первое значение из первой строки результата запроса.
Если строк нет, метод вернет None. Метод удобен,
когда запрос возвращает ровно одно значение, например,
при подсчете строк или получении одного поля.
Параметров метод не принимает.
Синтаксис
res.scalar()
Пример
Давайте создадим таблицу и вставим в нее одну запись,
а затем получим значение поля title с помощью
метода scalar:
from sqlalchemy import create_engine, text
engine = create_engine('sqlite:///:memory:')
with engine.connect() as conn:
conn.execute(text('CREATE TABLE articles (id INTEGER PRIMARY KEY, title TEXT, text TEXT, status TEXT, num INTEGER)'))
conn.execute(text("INSERT INTO articles (title, text, status, num) VALUES ('article', 'text', 'active', 1)"))
res = conn.execute(text('SELECT title FROM articles'))
print(res.scalar())
Результат выполнения кода:
"article"
Пример
Давайте получим количество строк в таблице с помощью
агрегатной функции и метода scalar:
from sqlalchemy import create_engine, text
engine = create_engine('sqlite:///:memory:')
with engine.connect() as conn:
conn.execute(text('CREATE TABLE articles (id INTEGER PRIMARY KEY, title TEXT, text TEXT, status TEXT, num INTEGER)'))
conn.execute(text("INSERT INTO articles (title, text, status, num) VALUES ('article', 'text', 'active', 1)"))
conn.execute(text("INSERT INTO articles (title, text, status, num) VALUES ('article', 'text', 'active', 2)"))
res = conn.execute(text('SELECT COUNT(*) FROM articles'))
print(res.scalar())
Результат выполнения кода:
2
Пример
Давайте убедимся, что при отсутствии строк метод
scalar возвращает None:
from sqlalchemy import create_engine, text
engine = create_engine('sqlite:///:memory:')
with engine.connect() as conn:
conn.execute(text('CREATE TABLE articles (id INTEGER PRIMARY KEY, title TEXT, text TEXT, status TEXT, num INTEGER)'))
res = conn.execute(text('SELECT title FROM articles'))
print(res.scalar())
Результат выполнения кода:
None
Смотрите также
-
класс
Result,
который представляет результат запроса -
метод
scalar_one,
который возвращает ровно одно значение -
метод
scalar_one_or_none,
который возвращает одно значение или None -
метод
first,
который возвращает первую строку результата