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

Метод delete класса Query

Метод delete класса Query выполняет удаление записей из таблицы, которые соответствуют текущему запросу. Метод принимает необязательный параметр synchronize_session, который определяет способ синхронизации состояния сессии после удаления. Возвращает количество удаленных записей.

Синтаксис

Query.delete(synchronize_session='auto')

Пример

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

from sqlalchemy import create_engine, String from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, Session class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(primary_key=True) title: Mapped[str] = mapped_column(String(100)) text: Mapped[str] = mapped_column(String(500)) status: Mapped[str] = mapped_column(String(50)) num: Mapped[int] engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with Session(engine) as session: article1 = Article(title='article 1', text='text 1', status='active', num=1) article2 = Article(title='article 2', text='text 2', status='draft', num=2) session.add_all([article1, article2]) session.commit() res = session.query(Article).filter(Article.title == 'article 1').delete() session.commit() print(res)

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

1

Пример

Давайте удалим все записи со статусом draft и выведем оставшиеся:

from sqlalchemy import create_engine, String from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, Session class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(primary_key=True) title: Mapped[str] = mapped_column(String(100)) text: Mapped[str] = mapped_column(String(500)) status: Mapped[str] = mapped_column(String(50)) num: Mapped[int] engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with Session(engine) as session: article1 = Article(title='article 1', text='text 1', status='active', num=1) article2 = Article(title='article 2', text='text 2', status='draft', num=2) article3 = Article(title='article 3', text='text 3', status='draft', num=3) session.add_all([article1, article2, article3]) session.commit() res = session.query(Article).filter(Article.status == 'draft').delete() session.commit() print(res) titles = session.query(Article.title).all() print(titles)

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

2 [('article 1',)]

Пример

Давайте удалим все записи из таблицы и выведем итоговый SQL-запрос:

from sqlalchemy import create_engine, String from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, Session class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(primary_key=True) title: Mapped[str] = mapped_column(String(100)) text: Mapped[str] = mapped_column(String(500)) status: Mapped[str] = mapped_column(String(50)) num: Mapped[int] engine = create_engine('sqlite:///:memory:', echo=True) Base.metadata.create_all(engine) with Session(engine) as session: article1 = Article(title='article 1', text='text 1', status='active', num=1) article2 = Article(title='article 2', text='text 2', status='draft', num=2) session.add_all([article1, article2]) session.commit() res = session.query(Article).delete() session.commit() print(res)

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

DELETE FROM articles

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

  • класс Query,
    который представляет запрос к базе данных
  • метод update,
    который обновляет записи в таблице
  • метод filter,
    который добавляет условия к запросу
  • метод count,
    который подсчитывает количество записей
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить