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

Метод execution_options класса AsyncEngine

Метод execution_options класса AsyncEngine позволяет задать параметры выполнения (execution options) для всех соединений, которые будут созданы этим движком. Метод принимает произвольный набор именованных аргументов, например isolation_level, synchronize_session, stream_results. Возвращается новый объект AsyncEngine, а исходный движок не изменяется.

Этот метод удобно применять, когда нужно один раз настроить режим выполнения запросов для всего приложения, не передавая параметры в каждый вызов execute.

Синтаксис

AsyncEngine.execution_options(**opt)

Пример

Давайте создадим асинхронный движок для базы SQLite в памяти и зададим параметр isolation_level:

import asyncio from sqlalchemy import text from sqlalchemy.ext.asyncio import create_async_engine async def main(): engine = create_async_engine('sqlite+aiosqlite:///:memory:') new_engine = engine.execution_options(isolation_level='SERIALIZABLE') async with new_engine.connect() as conn: res = await conn.execute(text('SELECT 1')) print(res.scalar()) asyncio.run(main())

Результат выполнения кода:

1

Пример

Давайте убедимся, что исходный движок не изменяется, а метод возвращает новый объект:

import asyncio from sqlalchemy.ext.asyncio import create_async_engine async def main(): engine = create_async_engine('sqlite+aiosqlite:///:memory:') new_engine = engine.execution_options(isolation_level='SERIALIZABLE') print(engine is new_engine) print(type(new_engine).__name__) asyncio.run(main())

Результат выполнения кода:

False "AsyncEngine"

Пример

Давайте применим метод к движку, который уже выполнял запросы, и зададим несколько параметров сразу:

import asyncio from sqlalchemy import text from sqlalchemy.ext.asyncio import create_async_engine async def main(): engine = create_async_engine('sqlite+aiosqlite:///:memory:') async with engine.connect() as conn: await conn.execute(text('SELECT 1')) new_engine = engine.execution_options( isolation_level='SERIALIZABLE', stream_results=True, ) async with new_engine.connect() as conn: res = await conn.execute(text('SELECT 1')) print(res.scalar()) asyncio.run(main())

Результат выполнения кода:

1

Смотрите также

  • класс AsyncEngine,
    который представляет асинхронный движок базы данных
  • метод connect,
    который открывает асинхронное соединение с базой
  • метод begin,
    который начинает асинхронную транзакцию
  • атрибут sync_engine,
    который возвращает синхронный движок
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить