Метод fetchone класса Result
Метод fetchone класса Result извлекает
следующую строку из результата выполнения запроса.
Метод не принимает параметров. При каждом вызове
он возвращает очередную строку в виде объекта Row
или значение None, если строки закончились.
После извлечения строка удаляется из результата,
поэтому повторный вызов вернет следующую строку.
Синтаксис
Result.fetchone()
Пример
Давайте создадим таблицу и извлечем одну строку из результата запроса:
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 VALUES (1, 'article 1'), (2, 'article 2')"))
res = conn.execute(text('SELECT * FROM articles'))
row = res.fetchone()
print(row)
Результат выполнения кода:
(1, 'article 1')
Пример
Давайте вызовем метод fetchone несколько раз
и посмотрим, как меняется результат:
<+python+>
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 VALUES (1, 'article 1'), (2, 'article 2')"))
res = conn.execute(text('SELECT * FROM articles'))
print(res.fetchone())
print(res.fetchone())
print(res.fetchone())
<-python+>
Результат выполнения кода:
(1, 'article 1')
(2, 'article 2')
None
Пример
Давайте обратимся к столбцам строки по имени:
<+python+>
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 VALUES (1, 'article 1')"))
res = conn.execute(text('SELECT * FROM articles'))
row = res.fetchone()
print(row.id)
print(row.title)
<-python+>
Результат выполнения кода:
1
"article 1"