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

Метод execute класса AsyncConnection

Метод execute класса AsyncConnection выполняет SQL-выражение или ORM-запрос в асинхронном соединении с базой данных. Первым параметром метод принимает SQL-выражение, вторым - словарь параметров для подстановки. Метод является асинхронным, поэтому вызывается через await и возвращает объект результата.

Синтаксис

await conn.execute(statement, parameters)

Пример

Давайте создадим асинхронный движок и выполним простой 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()) await engine.dispose() asyncio.run(main())

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

[(1,)]

Пример

Давайте создадим таблицу и вставим строку, используя метод 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: await conn.execute(text( 'CREATE TABLE articles (' 'id INTEGER PRIMARY KEY, ' 'title TEXT, ' 'text TEXT, ' 'status TEXT, ' 'num INTEGER)' )) await conn.execute( text('INSERT INTO articles (title, status, num) ' 'VALUES (:title, :status, :num)'), {'title': 'article', 'status': 'draft', 'num': 1} ) await conn.commit() res = await conn.execute(text('SELECT * FROM articles')) print(res.fetchall()) await engine.dispose() asyncio.run(main())

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

[(1, 'article', None, 'draft', 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, ' 'text TEXT, ' 'status TEXT, ' 'num INTEGER)' )) await conn.execute( text('INSERT INTO articles (title, num) ' 'VALUES (:title, :num)'), [{'title': 'article', 'num': 1}, {'title': 'user', 'num': 2}] ) await conn.commit() res = await conn.execute( text('SELECT title FROM articles WHERE num > :n'), {'n': 1} ) print(res.fetchall()) await engine.dispose() asyncio.run(main())

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

[('user',)]

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

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