Метод prefix_with
Метод prefix_with класса Select
добавляет произвольный текст в начало
итогового SQL-запроса. Первым параметром
метод принимает строку с префиксом.
Вторым необязательным параметром передается
диалект, для которого применяется префикс.
Третий необязательный параметр указывает,
что префикс должен быть добавлен после
ключевого слова SELECT.
Метод возвращает новый объект Select,
поэтому его можно вызывать цепочкой
с другими методами построения запроса.
Синтаксис
select(...).prefix_with(prefix, [dialect], [after])
Пример
Давайте создадим простой запрос и добавим
к нему префикс SQL_NO_CACHE:
from sqlalchemy import select, table, column
articles = table(
'articles',
column('id'),
column('title')
)
stmt = select(articles.c.id, articles.c.title).prefix_with('SQL_NO_CACHE')
print(stmt)
Результат выполнения кода:
"SELECT SQL_NO_CACHE articles.id, articles.title \nFROM articles"
Итоговый SQL запрос:
SELECT SQL_NO_CACHE articles.id, articles.title
FROM articles
Пример
Давайте добавим префикс только для
диалекта sqlite:
from sqlalchemy import select, table, column
articles = table(
'articles',
column('id'),
column('title')
)
stmt = select(articles.c.id).prefix_with('EXPLAIN', dialect='sqlite')
print(stmt)
Результат выполнения кода:
"SELECT EXPLAIN articles.id \nFROM articles"
Итоговый SQL запрос:
SELECT EXPLAIN articles.id
FROM articles
Пример
Давайте используем параметр after,
чтобы вставить префикс после ключевого
слова SELECT:
from sqlalchemy import select, table, column
articles = table(
'articles',
column('id'),
column('title')
)
stmt = select(articles.c.id).prefix_with('DISTINCT', after=True)
print(stmt)
Результат выполнения кода:
"SELECT DISTINCT articles.id \nFROM articles"
Итоговый SQL запрос:
SELECT DISTINCT articles.id
FROM articles
Пример
Давайте добавим сразу несколько префиксов,
вызвав метод prefix_with несколько раз:
from sqlalchemy import select, table, column
articles = table(
'articles',
column('id'),
column('title')
)
stmt = (
select(articles.c.id, articles.c.title)
.prefix_with('SQL_NO_CACHE')
.prefix_with('HIGH_PRIORITY')
)
print(stmt)
Результат выполнения кода:
"SELECT SQL_NO_CACHE HIGH_PRIORITY articles.id, articles.title \nFROM articles"
Итоговый SQL запрос:
SELECT SQL_NO_CACHE HIGH_PRIORITY articles.id, articles.title
FROM articles
Смотрите также
-
класс
Select,
который представляет конструктор SELECT-запроса -
метод
suffix_with,
который добавляет суффикс в конец SQL-запроса -
метод
with_hint,
который добавляет подсказку оптимизатору СУБД -
метод
distinct,
который добавляет ключевое слово DISTINCT