Атрибут closed
Атрибут closed класса Result возвращает
булево значение True или False в зависимости
от того, был ли закрыт объект результата. Атрибут не принимает
параметров и доступен только для чтения. Результат считается
закрытым после вызова метода close, после выхода
из контекстного менеджера with, а также после
полного исчерпания всех строк при потоковой выборке.
Синтаксис
result.closed
Пример
Давайте выполним запрос и проверим значение атрибута
closed сразу после получения результата:
from sqlalchemy import create_engine, text
engine = create_engine('sqlite:///:memory:')
with engine.connect() as conn:
res = conn.execute(text('SELECT 1'))
print(res.closed)
Результат выполнения кода:
False
Пример
Давайте явно закроем результат методом close
и снова проверим атрибут closed:
from sqlalchemy import create_engine, text
engine = create_engine('sqlite:///:memory:')
with engine.connect() as conn:
res = conn.execute(text('SELECT 1'))
print(res.closed)
res.close()
print(res.closed)
Результат выполнения кода:
False
True
Пример
Давайте посмотрим, как меняется атрибут closed
при потоковой выборке строк через метод yield_per:
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')"))
res = conn.execute(text('SELECT * FROM articles')).yield_per(1)
print(res.closed)
for row in res:
print(row)
print(res.closed)
Результат выполнения кода:
False
(1, 'article')
True
Смотрите также
-
класс
Result,
который представляет результат выполнения запроса -
метод
close,
который закрывает результат запроса -
метод
yield_per,
который включает потоковую выборку строк -
атрибут
returns_rows,
который показывает, возвращает ли запрос строки