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

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

Метод where класса Delete добавляет условие в конструкцию WHERE SQL-запроса DELETE. Первым параметром метод принимает условие отбора, обычно выражение вида table.c.column == value. Если метод не вызвать, то будут удалены все строки таблицы.

Синтаксис

delete(table).where(condition)

Пример

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

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), Column('text', String), ) metadata.create_all(engine) with engine.connect() as conn: conn.execute(articles.insert(), [ {'id': 1, 'title': 'article 1', 'text': 'text 1'}, {'id': 2, 'title': 'article 2', 'text': 'text 2'}, ]) stmt = articles.delete().where(articles.c.id == 1) res = conn.execute(stmt) print(res.rowcount) res = conn.execute(articles.select()) print(res.fetchall())

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

1 [(2, 'article 2', 'text 2')]

Пример

Давайте объединим два условия через and_ и удалим сразу несколько строк:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, and_ 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.connect() as conn: conn.execute(articles.insert(), [ {'id': 1, 'title': 'article 1', 'status': 'draft'}, {'id': 2, 'title': 'article 2', 'status': 'draft'}, {'id': 3, 'title': 'article 3', 'status': 'published'}, ]) stmt = articles.delete().where( and_(articles.c.status == 'draft', articles.c.id == 2) ) res = conn.execute(stmt) print(res.rowcount) res = conn.execute(articles.select()) print(res.fetchall())

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

1 [(1, 'article 1', 'draft'), (3, 'article 3', 'published')]

Пример

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

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), ) stmt = articles.delete().where(articles.c.id == 1) print(stmt)

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

"DELETE FROM articles WHERE articles.id = :id_1"

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

DELETE FROM articles WHERE articles.id = ?

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

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