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

Класс AsyncConnection

Класс AsyncConnection представляет собой асинхронное соединение с базой данных. Он создается через метод connect объекта AsyncEngine и используется внутри конструкции async with. Соединение позволяет выполнять SQL-запросы, управлять транзакциями и получать результаты в асинхронном режиме. Первым параметром при создании передается асинхронный движок, а сам объект поддерживает методы execute, scalar, commit, rollback, close и другие.

Синтаксис

AsyncConnection(engine)

Пример

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

import asyncio from sqlalchemy.ext.asyncio import create_async_engine async def main(): engine = create_async_engine('sqlite+aiosqlite:///:memory:') async with engine.connect() as conn: print(conn) asyncio.run(main())

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

"<sqlalchemy.ext.asyncio.engine.AsyncConnection object at ...>"

Пример

Давайте выполним простой SQL-запрос через метод execute асинхронного соединения:

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,)]

Пример

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

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( '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 id, title FROM articles')) print(res.fetchall()) asyncio.run(main())

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

[(1, 'article')]

Пример

Давайте откатим транзакцию через метод rollback, чтобы изменения не попали в базу данных:

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( 'CREATE TABLE articles (id INTEGER PRIMARY KEY, title TEXT)' )) await conn.commit() await conn.execute(text( "INSERT INTO articles (title) VALUES ('article')" )) await conn.rollback() res = await conn.execute(text('SELECT COUNT(*) FROM articles')) print(res.scalar()) asyncio.run(main())

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

0

Пример

Давайте получим одно скалярное значение через метод scalar асинхронного соединения:

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.scalar(text('SELECT 42')) print(res) asyncio.run(main())

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

42

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

  • метод execute,
    который выполняет SQL-запрос асинхронно
  • метод scalar,
    который возвращает одно скалярное значение
  • метод commit,
    который фиксирует текущую транзакцию
  • метод rollback,
    который откатывает текущую транзакцию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить