Метод execute
Метод execute класса Connection выполняет
SQL-запрос к базе данных и возвращает объект
результата. Первым параметром метод принимает
SQL-запрос в виде текста или конструкции
SQLAlchemy. Вторым необязательным параметром
передаются словарь параметров для подстановки
в запрос.
Синтаксис
connection.execute(statement, [parameters])
Пример
Давайте выполним простой SQL-запрос и получим объект результата:
from sqlalchemy import create_engine, text
engine = create_engine('sqlite:///:memory:')
with engine.connect() as conn:
res = conn.execute(text('SELECT 1'))
print(res)
Результат выполнения кода:
<sqlalchemy.engine.cursor.CursorResult object at 0x...>
Пример
Давайте создадим таблицу и вставим в нее
данные с помощью метода execute:
from sqlalchemy import create_engine, text
engine = create_engine('sqlite:///:memory:')
with engine.connect() as conn:
conn.execute(text('CREATE TABLE articles (id INTEGER PRIMARY KEY, title TEXT)'))
conn.execute(
text('INSERT INTO articles (title) VALUES (:title)'),
{'title': 'article'}
)
conn.commit()
res = conn.execute(text('SELECT title FROM articles'))
print(res.fetchall())
Результат выполнения кода:
[('article',)]
Пример
Давайте выполним запрос с несколькими параметрами и выведем строки по одной:
from sqlalchemy import create_engine, text
engine = create_engine('sqlite:///:memory:')
with engine.connect() as conn:
conn.execute(text('CREATE TABLE articles (id INTEGER PRIMARY KEY, title TEXT, status TEXT)'))
conn.execute(
text('INSERT INTO articles (title, status) VALUES (:title, :status)'),
{'title': 'article', 'status': 'published'}
)
conn.commit()
res = conn.execute(
text('SELECT id, title FROM articles WHERE status = :status'),
{'status': 'published'}
)
for row in res:
print(row)
Результат выполнения кода:
(1, 'article')
Пример
Давайте посмотрим, какой SQL-запрос выполняется
при вызове метода execute с конструкцией
SQLAlchemy:
from sqlalchemy import create_engine, text
engine = create_engine('sqlite:///:memory:', echo=True)
with engine.connect() as conn:
conn.execute(text('SELECT id, title FROM articles'))
Итоговый SQL запрос:
SELECT id, title FROM articles
Смотрите также
-
класс
Connection,
который представляет соединение с базой данных -
метод
scalar,
который возвращает первое значение результата -
метод
scalars,
который возвращает по одной колонке из каждой строки -
метод
exec_driver_sql,
который выполняет SQL напрямую в драйвер