Атрибут bind класса AsyncSession
Атрибут bind класса AsyncSession
возвращает объект AsyncEngine или
AsyncConnection, к которому привязана
сессия. Значение атрибута задается при создании
сессии через параметр bind. Если сессия
создана без привязки, атрибут вернет
None. Через этот атрибут можно получить
движок и работать с ним напрямую, например,
для выполнения нативных SQL-запросов.
Синтаксис
async_session.bind
Пример
Давайте создадим асинхронную сессию с привязкой
к движку и выведем значение атрибута
bind:
import asyncio
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
async def main():
engine = create_async_engine('sqlite+aiosqlite:///:memory:')
async with AsyncSession(engine) as session:
print(session.bind)
asyncio.run(main())
Результат выполнения кода:
"AsyncEngine(sqlite+aiosqlite:///:memory:)"
Пример
Давайте создадим сессию без привязки и проверим
значение атрибута bind:
import asyncio
from sqlalchemy.ext.asyncio import AsyncSession
async def main():
async with AsyncSession() as session:
print(session.bind)
asyncio.run(main())
Результат выполнения кода:
None
Пример
Давайте через атрибут bind получим
движок и выполним нативный SQL-запрос:
import asyncio
from sqlalchemy import text
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
async def main():
engine = create_async_engine('sqlite+aiosqlite:///:memory:')
async with AsyncSession(engine) as session:
bind = session.bind
async with bind.connect() as conn:
res = await conn.execute(text('SELECT 1'))
print(res.scalar())
asyncio.run(main())
Результат выполнения кода:
1
Смотрите также
-
класс
AsyncSession,
который представляет асинхронную сессию -
атрибут
sync_session,
который возвращает синхронную сессию -
метод
execute,
который выполняет SQL-запрос -
метод
run_sync,
который выполняет синхронную функцию в асинхронном контексте