Атрибут info класса AsyncSession
Атрибут info класса AsyncSession представляет
собой обычный словарь Python, в котором можно хранить
произвольные пользовательские данные, связанные с конкретной
асинхронной сессией. Атрибут доступен только для чтения
ссылки на словарь: сам словарь можно свободно изменять,
добавляя или удаляя ключи, но заменить его другим объектом
нельзя. Это удобно для передачи дополнительного контекста
между слоями приложения без изменения сигнатур функций.
Синтаксис
session.info
Пример
Давайте создадим асинхронную сессию и запишем в атрибут
info произвольные данные:
import asyncio
from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine
async def main():
engine = create_async_engine('sqlite+aiosqlite:///:memory:')
async with AsyncSession(engine) as session:
session.info['request_id'] = 'article'
session.info['user'] = 'user'
print(session.info)
asyncio.run(main())
Результат выполнения кода:
{'request_id': 'article', 'user': 'user'}
Пример
Давайте проверим, что словарь info пуст по умолчанию,
и покажем, как читать из него значения:
import asyncio
from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine
async def main():
engine = create_async_engine('sqlite+aiosqlite:///:memory:')
async with AsyncSession(engine) as session:
print(session.info)
session.info['status'] = 'active'
print(session.info.get('status'))
print(session.info.get('missing', 'default'))
asyncio.run(main())
Результат выполнения кода:
{}
"active"
"default"
Пример
Давайте используем атрибут info для хранения номера
запроса и выведем его при выполнении SQL-запроса через
execute:
import asyncio
from sqlalchemy import text
from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine
async def main():
engine = create_async_engine('sqlite+aiosqlite:///:memory:')
async with AsyncSession(engine) as session:
session.info['num'] = 1
res = await session.execute(text('SELECT :num AS num'), {'num': session.info['num']})
print(res.scalar())
asyncio.run(main())
Результат выполнения кода:
1
Смотрите также
-
класс
AsyncSession,
который представляет асинхронную сессию -
атрибут
sync_session,
который возвращает синхронную сессию -
атрибут
bind,
который возвращает привязанный движок -
атрибут
identity_map,
который хранит карту идентичности объектов