Метод connect класса AsyncEngine
Метод connect класса AsyncEngine
открывает асинхронное соединение с базой данных
и возвращает объект AsyncConnection.
Соединение получается из пула соединений,
которым управляет движок. Метод является
асинхронным, поэтому его нужно вызывать
через await. Параметров метод не принимает.
Полученное соединение следует закрывать
после завершения работы, например,
через асинхронный контекстный менеджер
async with.
Синтаксис
await engine.connect()
Пример
Давайте создадим асинхронный движок для базы
SQLite в памяти и откроем соединение:
import asyncio
from sqlalchemy.ext.asyncio import create_async_engine
from sqlalchemy import text
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.scalar())
await engine.dispose()
asyncio.run(main())
Результат выполнения кода:
1
Пример
Давайте откроем соединение без контекстного
менеджера и закроем его вручную методом
close:
import asyncio
from sqlalchemy.ext.asyncio import create_async_engine
from sqlalchemy import text
async def main():
engine = create_async_engine('sqlite+aiosqlite:///:memory:')
conn = await engine.connect()
try:
res = await conn.execute(text('SELECT 1'))
print(res.scalar())
finally:
await conn.close()
await engine.dispose()
asyncio.run(main())
Результат выполнения кода:
1
Пример
Давайте выполним запрос к таблице articles
через открытое соединение:
import asyncio
from sqlalchemy.ext.asyncio import create_async_engine
from sqlalchemy import text
async def main():
engine = create_async_engine('sqlite+aiosqlite:///:memory:')
async with engine.connect() as conn:
await conn.execute(text(
'CREATE TABLE articles (id INTEGER PRIMARY KEY, title TEXT)'
))
await conn.execute(text(
"INSERT INTO articles (title) VALUES ('article')"
))
await conn.commit()
res = await conn.execute(text('SELECT title FROM articles'))
for row in res:
print(row.title)
await engine.dispose()
asyncio.run(main())
Результат выполнения кода:
"article"
Смотрите также
-
класс
AsyncEngine,
который представляет асинхронный движок базы данных -
метод
begin,
который открывает соединение с транзакцией -
метод
raw_connection,
который возвращает низкоуровневое соединение драйвера -
метод
dispose,
который закрывает пул соединений движка