Метод first класса Result
Метод first класса Result возвращает
первую строку результата запроса в виде объекта
Row. Если результат пуст, метод возвращает
None. Метод не принимает параметров. Его удобно
использовать, когда нужно получить только одну запись
из выборки, например при поиске по первичному ключу
или при проверке наличия данных.
Синтаксис
res.first()
Пример
Давайте создадим таблицу articles, добавим
в неё несколько записей и получим первую строку
результата:
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 1', 'text 1', 'active', 10)"))
conn.execute(text("INSERT INTO articles (title, text, status, num) VALUES ('article 2', 'text 2', 'draft', 20)"))
conn.commit()
res = conn.execute(text('SELECT id, title FROM articles ORDER BY id'))
row = res.first()
print(row)
Результат выполнения кода:
(1, 'article 1')
Пример
Если в таблице нет строк, метод first вернёт
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)'))
conn.commit()
res = conn.execute(text('SELECT id, title FROM articles'))
row = res.first()
print(row)
Результат выполнения кода:
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)'))
conn.execute(text("INSERT INTO articles (title, text, status, num) VALUES ('article 1', 'text 1', 'active', 10)"))
conn.execute(text("INSERT INTO articles (title, text, status, num) VALUES ('article 2', 'text 2', 'draft', 20)"))
conn.commit()
res = conn.execute(text('SELECT id, title, status FROM articles ORDER BY id'))
row = res.first()
print(row.id, row.title, row.status)
Результат выполнения кода:
"1 article 1 active"
Смотрите также
-
класс
Result,
который представляет результат запроса -
метод
one,
который возвращает ровно одну строку результата -
метод
one_or_none,
который возвращает одну строку или None -
метод
scalar,
который возвращает первое значение первой строки