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

Метод 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
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить