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

Метод fetchall класса Result

Метод fetchall класса Result возвращает все оставшиеся строки результата в виде списка объектов Row. Метод не принимает параметров и полностью опустошает буфер результата: после его вызова повторный вызов вернет пустой список.

Метод удобно использовать, когда нужно заранее получить весь набор строк для дальнейшей обработки в памяти.

Синтаксис

res.fetchall()

Пример

Давайте создадим таблицу articles, вставим несколько строк и получим все строки методом fetchall:

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, text TEXT, status TEXT, num INTEGER)')) conn.execute(text('INSERT INTO articles (id, title, text, status, num) VALUES (1, :t, :x, :s, :n)'), {'t': 'article 1', 'x': 'text 1', 's': 'draft', 'n': 10}) conn.execute(text('INSERT INTO articles (id, title, text, status, num) VALUES (2, :t, :x, :s, :n)'), {'t': 'article 2', 'x': 'text 2', 's': 'published', 'n': 20}) conn.execute(text('INSERT INTO articles (id, title, text, status, num) VALUES (3, :t, :x, :s, :n)'), {'t': 'article 3', 'x': 'text 3', 's': 'draft', 'n': 30}) res = conn.execute(text('SELECT * FROM articles')) rows = res.fetchall() for row in rows: print(row)

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

(1, 'article 1', 'text 1', 'draft', 10) (2, 'article 2', 'text 2', 'published', 20) (3, 'article 3', 'text 3', 'draft', 30)

Пример

Давайте обратимся к столбцам строки по именам после получения всех строк:

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, text TEXT, status TEXT, num INTEGER)')) conn.execute(text('INSERT INTO articles (id, title, text, status, num) VALUES (1, :t, :x, :s, :n)'), {'t': 'article 1', 'x': 'text 1', 's': 'draft', 'n': 10}) conn.execute(text('INSERT INTO articles (id, title, text, status, num) VALUES (2, :t, :x, :s, :n)'), {'t': 'article 2', 'x': 'text 2', 's': 'published', 'n': 20}) res = conn.execute(text('SELECT id, title FROM articles')) rows = res.fetchall() for row in rows: print(row.title, row.num if 'num' in row._fields else '-')

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

article 1 - article 2 -

Пример

Давайте убедимся, что после вызова fetchall буфер результата пуст и повторный вызов возвращает пустой список:

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, text TEXT, status TEXT, num INTEGER)')) conn.execute(text('INSERT INTO articles (id, title, text, status, num) VALUES (1, :t, :x, :s, :n)'), {'t': 'article 1', 'x': 'text 1', 's': 'draft', 'n': 10}) conn.execute(text('INSERT INTO articles (id, title, text, status, num) VALUES (2, :t, :x, :s, :n)'), {'t': 'article 2', 'x': 'text 2', 's': 'published', 'n': 20}) res = conn.execute(text('SELECT * FROM articles')) first = res.fetchall() second = res.fetchall() print(first) print(second)

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

[(1, 'article 1', 'text 1', 'draft', 10), (2, 'article 2', 'text 2', 'published', 20)] []

Пример

Давайте получим итоговый SQL-запрос, который выполняется при выборке всех строк:

from sqlalchemy import create_engine, text engine = create_engine('sqlite:///:memory:', echo=True) with engine.connect() as conn: conn.execute(text('CREATE TABLE articles (id INTEGER, title TEXT, text TEXT, status TEXT, num INTEGER)')) conn.execute(text('INSERT INTO articles (id, title, text, status, num) VALUES (1, :t, :x, :s, :n)'), {'t': 'article 1', 'x': 'text 1', 's': 'draft', 'n': 10}) res = conn.execute(text('SELECT * FROM articles')) rows = res.fetchall() print(rows)

Итоговый SQL запрос:

SELECT * FROM articles

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

  • класс Result,
    который представляет результат запроса
  • метод fetchone,
    который возвращает одну строку результата
  • метод fetchmany,
    который возвращает несколько строк результата
  • метод all,
    который возвращает все строки в виде списка
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить