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

Атрибут rowcount

Атрибут rowcount класса Result возвращает количество строк, которые были затронуты или возвращены выполненным SQL-запросом. Значение атрибута зависит от типа запроса: для запросов INSERT, UPDATE, DELETE это число изменённых строк, а для SELECT - число найденных строк. Атрибут не принимает параметров и доступен только для чтения. Если драйвер базы данных не предоставляет информацию о количестве строк, атрибут вернёт значение -1.

Синтаксис

res.rowcount

Пример

Давайте создадим таблицу и вставим в неё несколько строк, чтобы посмотреть на значение атрибута rowcount после выполнения запроса INSERT:

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)')) res = conn.execute( text('INSERT INTO articles (title) VALUES (:t1), (:t2), (:t3)'), [{'t1': 'article 1', 't2': 'article 2', 't3': 'article 3'}] ) print(res.rowcount)

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

3

Пример

Теперь посмотрим, что вернёт атрибут rowcount после выполнения запроса UPDATE:

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)')) conn.execute( text('INSERT INTO articles (title) VALUES (:t1), (:t2), (:t3)'), [{'t1': 'article 1', 't2': 'article 2', 't3': 'article 3'}] ) res = conn.execute( text('UPDATE articles SET title = :title WHERE id <= :max_id'), {'title': 'article', 'max_id': 2} ) print(res.rowcount)

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

2

Пример

Атрибут rowcount также работает и для запроса DELETE. Давайте удалим одну строку и проверим значение атрибута:

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)')) conn.execute( text('INSERT INTO articles (title) VALUES (:t1), (:t2), (:t3)'), [{'t1': 'article 1', 't2': 'article 2', 't3': 'article 3'}] ) res = conn.execute(text('DELETE FROM articles WHERE id = :id'), {'id': 1}) print(res.rowcount)

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

1

Пример

Для запроса SELECT атрибут rowcount вернёт количество найденных строк. Проверим это на примере:

<+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 PRIMARY KEY, title TEXT)')) conn.execute( text('INSERT INTO articles (title) VALUES (:t1), (:t2), (:t3)'), [{'t1': 'article 1', 't2': 'article 2', 't3': 'article 3'}] ) res = conn.execute(text('SELECT * FROM articles')) print(res.rowcount) <-python+>

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

3

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

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