Класс AsyncEngine
Класс AsyncEngine представляет собой асинхронный
движок для работы с базой данных. Он создается функцией
create_async_engine и управляет пулом асинхронных
соединений, диалектом СУБД и транзакциями. Первым параметром
при создании передается строка URL подключения, которая
указывает тип базы данных и драйвер. Асинхронный движок
позволяет выполнять запросы без блокировки основного потока.
Синтаксис
create_async_engine(url, [echo])
Пример
Давайте создадим асинхронный движок для базы SQLite
в памяти:
from sqlalchemy.ext.asyncio import create_async_engine
engine = create_async_engine('sqlite+aiosqlite:///:memory:')
print(engine)
Результат выполнения кода:
"AsyncEngine(sqlite+aiosqlite:///:memory:)"
Пример
Давайте выполним простой SQL-запрос через асинхронное соединение:
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:
res = await conn.execute(text('SELECT 1'))
print(res.fetchall())
asyncio.run(main())
Результат выполнения кода:
[(1,)]
Пример
Давайте получим доступ к синхронному движку через атрибут
sync_engine:
from sqlalchemy.ext.asyncio import create_async_engine
engine = create_async_engine('sqlite+aiosqlite:///:memory:')
print(engine.sync_engine)
Результат выполнения кода:
"Engine(sqlite+aiosqlite:///:memory:)"
Смотрите также
-
метод
connect,
который открывает асинхронное соединение с базой -
метод
begin,
который начинает асинхронную транзакцию -
метод
dispose,
который закрывает пул соединений движка -
атрибут
sync_engine,
который возвращает синхронный движок