Атрибут info класса Session
Атрибут info класса Session представляет
собой обычный словарь Python, в который можно
записывать любые пользовательские данные,
связанные с конкретной сессией. SQLAlchemy
не использует содержимое этого словаря
внутренне: он полностью предназначен для
нужд приложения. Атрибут доступен для чтения
и записи, а по умолчанию содержит пустой
словарь. Это удобно для хранения метаданных
сессии, например, идентификатора запроса,
имени пользователя или флагов логирования.
Синтаксис
Session.info
Пример
Давайте создадим сессию и посмотрим на
содержимое атрибута info по умолчанию:
from sqlalchemy import create_engine
from sqlalchemy.orm import Session
engine = create_engine('sqlite:///:memory:')
with Session(engine) as session:
print(session.info)
Результат выполнения кода:
{}
Пример
Давайте запишем в словарь info собственные
данные и прочитаем их обратно:
from sqlalchemy import create_engine
from sqlalchemy.orm import Session
engine = create_engine('sqlite:///:memory:')
with Session(engine) as session:
session.info['user'] = 'article'
session.info['request_id'] = 42
print(session.info['user'])
print(session.info['request_id'])
Результат выполнения кода:
"article"
42
Пример
Давайте используем info для хранения
счётчика операций внутри одной сессии:
from sqlalchemy import create_engine, text
from sqlalchemy.orm import Session
engine = create_engine('sqlite:///:memory:')
with Session(engine) as session:
session.info['counter'] = 0
session.execute(text('SELECT 1'))
session.info['counter'] += 1
session.execute(text('SELECT 1'))
session.info['counter'] += 1
print(session.info['counter'])
Результат выполнения кода:
2
Смотрите также
-
класс
Session,
который представляет сессию работы с базой -
атрибут
identity_map,
который хранит карту загруженных объектов -
атрибут
is_active,
который показывает активность сессии -
метод
close,
который закрывает сессию