Метод execution_options класса Select
Метод execution_options класса Select
задает опции выполнения для отдельного
запроса. Первым параметром метод принимает
словарь с опциями, которые влияют на
выполнение запроса на уровне соединения
или драйвера базы данных. Метод возвращает
новый объект Select, поэтому его можно
использовать в цепочке вызовов.
Синтаксис
select(...).execution_options(**kwargs)
Пример
Давайте создадим запрос с опцией
stream_results, которая включает
потоковую передачу результатов:
from sqlalchemy import create_engine, select, text
engine = create_engine('sqlite:///:memory:')
with engine.connect() as conn:
conn.execute(text('CREATE TABLE articles (id INTEGER, title TEXT)'))
conn.execute(text("INSERT INTO articles VALUES (1, 'article 1')"))
conn.execute(text("INSERT INTO articles VALUES (2, 'article 2')"))
conn.commit()
stmt = select(text('*')).select_from(text('articles'))
stmt = stmt.execution_options(stream_results=True)
with engine.connect() as conn:
res = conn.execute(stmt)
for row in res:
print(row)
Результат выполнения кода:
(1, 'article 1')
(2, 'article 2')
Пример
Давайте зададим опцию isolation_level,
чтобы выполнить запрос в режиме
AUTOCOMMIT:
from sqlalchemy import create_engine, select, text
engine = create_engine('sqlite:///:memory:')
with engine.connect() as conn:
conn.execute(text('CREATE TABLE articles (id INTEGER, title TEXT)'))
conn.execute(text("INSERT INTO articles VALUES (1, 'article 1')"))
conn.commit()
stmt = select(text('*')).select_from(text('articles'))
stmt = stmt.execution_options(isolation_level='AUTOCOMMIT')
with engine.connect() as conn:
res = conn.execute(stmt)
print(res.fetchall())
Результат выполнения кода:
[(1, 'article 1')]
Пример
Давайте применим опцию compiled_cache
для управления кэшем скомпилированных
запросов:
from sqlalchemy import create_engine, select, text
engine = create_engine('sqlite:///:memory:')
with engine.connect() as conn:
conn.execute(text('CREATE TABLE articles (id INTEGER, title TEXT)'))
conn.execute(text("INSERT INTO articles VALUES (1, 'article 1')"))
conn.commit()
stmt = select(text('*')).select_from(text('articles'))
stmt = stmt.execution_options(compiled_cache=None)
with engine.connect() as conn:
res = conn.execute(stmt)
print(res.fetchall())
Результат выполнения кода:
[(1, 'article 1')]
Смотрите также
-
класс
Select,
который представляет запрос SELECT -
метод
options,
который задает ORM-опции загрузки -
метод
where,
который добавляет условие фильтрации -
метод
with_for_update,
который блокирует выбранные строки