Метод remove класса scoped_session
Метод remove класса scoped_session удаляет
текущую сессию из реестра и закрывает ее. После вызова
этого метода следующий доступ к реестру создаст новую
сессию. Метод не принимает параметров и не возвращает
значения. Обычно используется для освобождения ресурсов
после завершения работы с базой данных в рамках
определенного потока или контекста.
Синтаксис
scoped_session.remove()
Пример
Давайте создадим реестр scoped_session,
получим сессию и затем удалим ее методом remove:
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, scoped_session
engine = create_engine('sqlite:///:memory:')
Session = sessionmaker(bind=engine)
scoped = scoped_session(Session)
session = scoped()
print(session)
scoped.remove()
print(scoped.registry.has())
Результат выполнения кода:
<sqlalchemy.orm.session.Session object at 0x...>
False
Пример
Давайте убедимся, что после вызова remove
следующий доступ к реестру создает новую сессию:
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, scoped_session
engine = create_engine('sqlite:///:memory:')
Session = sessionmaker(bind=engine)
scoped = scoped_session(Session)
first = scoped()
scoped.remove()
second = scoped()
print(first is second)
Результат выполнения кода:
False
Пример
Давайте создадим таблицу, добавим запись через сессию
реестра, а затем вызовем remove для закрытия
сессии:
from sqlalchemy import create_engine, text
from sqlalchemy.orm import sessionmaker, scoped_session
engine = create_engine('sqlite:///:memory:')
with engine.begin() as conn:
conn.execute(text('CREATE TABLE articles (id INTEGER PRIMARY KEY, title TEXT)'))
Session = sessionmaker(bind=engine)
scoped = scoped_session(Session)
session = scoped()
session.execute(text("INSERT INTO articles (title) VALUES ('article')"))
session.commit()
scoped.remove()
with engine.connect() as conn:
res = conn.execute(text('SELECT title FROM articles')).fetchall()
print(res)
Результат выполнения кода:
[('article',)]
Смотрите также
-
класс
scoped_session,
который создает реестр сессий -
метод
configure,
который настраивает параметры реестра -
метод
query,
который создает запрос через сессию реестра -
метод
remove,
который удаляет текущую сессию из реестра