Метод scalar класса Connection
Метод scalar класса Connection выполняет
SQL-запрос и возвращает скалярное значение -
первый столбец первой строки результата. Если
запрос не вернул ни одной строки, метод возвращает
None. Первым параметром передается
SQL-выражение или текст запроса, дополнительно
можно передать словарь параметров.
Синтаксис
Connection.scalar(statement, parameters=None, execution_options=None)
Пример
Давайте выполним простой запрос и получим скалярное значение:
from sqlalchemy import create_engine, text
engine = create_engine('sqlite:///:memory:')
with engine.connect() as conn:
res = conn.scalar(text('SELECT 1'))
print(res)
Результат выполнения кода:
1
Пример
Давайте создадим таблицу, вставим строку и получим значение одного из полей:
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 (:id, :title)'),
{'id': 1, 'title': 'article'}
)
res = conn.scalar(text('SELECT title FROM articles WHERE id = :id'), {'id': 1})
print(res)
Результат выполнения кода:
"article"
Пример
Давайте используем агрегатную функцию и получим количество строк в таблице:
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')"))
conn.execute(text("INSERT INTO articles (id, title) VALUES (2, 'user')"))
res = conn.scalar(text('SELECT COUNT(*) FROM articles'))
print(res)
Результат выполнения кода:
2
Смотрите также
-
класс
Connection,
который представляет соединение с базой данных -
метод
execute,
который выполняет SQL-запрос и возвращает результат -
метод
scalars,
который возвращает первый столбец всех строк результата -
метод
exec_driver_sql,
который выполняет запрос напрямую через драйвер СУБД