Атрибут returns_rows
Атрибут returns_rows класса Result
возвращает логическое значение, которое показывает,
содержит ли результат выполнения запроса строки.
Значение True означает, что запрос вернул строки
и их можно получить методами fetchone,
fetchmany, fetchall, all,
first и другими. Значение False
говорит о том, что запрос не возвращает строк
(например, INSERT, UPDATE, DELETE
или DDL-операция). Атрибут не принимает параметров
и доступен только для чтения.
Синтаксис
res.returns_rows
Пример
Давайте выполним запрос SELECT и проверим
значение атрибута returns_rows:
from sqlalchemy import create_engine, text
engine = create_engine('sqlite:///:memory:')
with engine.connect() as conn:
res = conn.execute(text('SELECT 1 AS num'))
print(res.returns_rows)
Результат выполнения кода:
True
Пример
Давайте выполним запрос CREATE TABLE
и проверим значение атрибута returns_rows:
from sqlalchemy import create_engine, text
engine = create_engine('sqlite:///:memory:')
with engine.connect() as conn:
res = conn.execute(text(
'CREATE TABLE articles (id INTEGER, title TEXT)'
))
print(res.returns_rows)
Результат выполнения кода:
False
Пример
Давайте вставим строку в таблицу и проверим,
возвращает ли запрос 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, title TEXT)'
))
res = conn.execute(text(
"INSERT INTO articles (id, title) VALUES (1, 'article')"
))
print(res.returns_rows)
Результат выполнения кода:
False
Пример
Давайте проверим атрибут returns_rows
для запроса с параметрами:
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 (id, title) VALUES (1, 'article')"
))
res = conn.execute(
text('SELECT id, title FROM articles WHERE id = :id'),
{'id': 1}
)
print(res.returns_rows)
Результат выполнения кода:
True