Атрибут 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 вернёт
количество найденных строк. Проверим это на примере:
Результат выполнения кода:
3
Смотрите также
-
класс
Result,
который представляет результат выполнения запроса -
метод
all,
который возвращает все строки результата -
метод
fetchall,
который извлекает все оставшиеся строки -
атрибут
returns_rows,
который показывает, возвращает ли запрос строки