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

Метод execution_options класса Delete

Метод execution_options класса Delete задает параметры выполнения для оператора удаления строк. Первым параметром метод принимает словарь с настройками, которые влияют на поведение выполняемого запроса. Метод возвращает новый объект Delete с обновленными настройками выполнения.

Синтаксис

Delete.execution_options(**kwargs)

Пример

Давайте создадим таблицу articles и удалим строки с настройкой выполнения:

from sqlalchemy import create_engine, delete, 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), Column('status', String) ) metadata.create_all(engine) with engine.begin() as conn: conn.execute(articles.insert(), [ {'title': 'article 1', 'status': 'active'}, {'title': 'article 2', 'status': 'archive'} ]) stmt = delete(articles).where(articles.c.status == 'archive') stmt = stmt.execution_options(synchronize_session=False) with engine.begin() as conn: res = conn.execute(stmt) print(res.rowcount)

Результат выполнения кода:

1

Пример

Давайте проверим, что после удаления в таблице осталась только одна строка:

from sqlalchemy import create_engine, delete, select, 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), Column('status', String) ) metadata.create_all(engine) with engine.begin() as conn: conn.execute(articles.insert(), [ {'title': 'article 1', 'status': 'active'}, {'title': 'article 2', 'status': 'archive'} ]) stmt = delete(articles).where(articles.c.status == 'archive') stmt = stmt.execution_options(synchronize_session='fetch') with engine.begin() as conn: conn.execute(stmt) res = conn.execute(select(articles.c.title)).fetchall() print(res)

Результат выполнения кода:

[('article 1',)]

Пример

Давайте посмотрим итоговый SQL-запрос, который формируется при удалении строк:

from sqlalchemy import create_engine, delete, MetaData, Table, Column, Integer, String from sqlalchemy.dialects import sqlite metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), Column('status', String) ) stmt = delete(articles).where(articles.c.status == 'archive') stmt = stmt.execution_options(synchronize_session=False) print(stmt.compile(dialect=sqlite.dialect()))

Итоговый SQL запрос:

DELETE FROM articles WHERE articles.status = ?

Смотрите также

  • класс Delete,
    который представляет оператор удаления строк
  • метод where,
    который задает условие отбора удаляемых строк
  • метод returning,
    который возвращает значения удаленных строк
  • метод execution_options,
    который задает параметры выполнения удаления
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить