Метод prefix_with класса Insert
Метод prefix_with класса Insert добавляет произвольный текстовый префикс
к SQL-запросу INSERT. Первым параметром метод принимает строку с префиксом.
Вторым необязательным параметром передается диалект СУБД, для которого применяется
префикс. Метод возвращает новый объект Insert, что позволяет выстраивать
цепочку вызовов.
Синтаксис
insert(table).prefix_with(prefix, [dialect])
Пример
Давайте создадим таблицу articles и добавим к запросу вставки
префикс OR IGNORE, который поддерживается в SQLite:
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String
engine = create_engine('sqlite:///:memory:')
metadata = MetaData()
articles = Table(
'articles', metadata,
Column('id', Integer, primary_key=True),
Column('title', String)
)
metadata.create_all(engine)
stmt = articles.insert().prefix_with('OR IGNORE').values(title='article')
print(stmt)
Результат выполнения кода:
INSERT OR IGNORE INTO articles (title) VALUES (?)
Пример
Давайте выполним вставку с префиксом и проверим результат через соединение:
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String
engine = create_engine('sqlite:///:memory:')
metadata = MetaData()
articles = Table(
'articles', metadata,
Column('id', Integer, primary_key=True),
Column('title', String)
)
metadata.create_all(engine)
with engine.connect() as conn:
conn.execute(articles.insert().values(title='article'))
conn.execute(articles.insert().prefix_with('OR IGNORE').values(title='article'))
res = conn.execute(articles.select()).fetchall()
print(res)
Результат выполнения кода:
[(1, 'article')]
Пример
Давайте передадим вторым параметром диалект, чтобы префикс применялся только для конкретной СУБД:
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String
engine = create_engine('sqlite:///:memory:')
metadata = MetaData()
articles = Table(
'articles', metadata,
Column('id', Integer, primary_key=True),
Column('title', String)
)
metadata.create_all(engine)
stmt = articles.insert().prefix_with('OR IGNORE', dialect='sqlite').values(title='article')
print(stmt)
Итоговый SQL запрос:
INSERT OR IGNORE INTO articles (title) VALUES (?)
Смотрите также
-
класс
Insert,
который представляет SQL-запрос INSERT -
метод
values,
который задает значения для вставки -
метод
inline,
который включает встраивание значений в SQL-запрос -
метод
from_select,
который создает INSERT из результата SELECT