РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
594 of 711 menu

Атрибут 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,
    который хранит карту идентичности объектов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить