Удаление записей с помощью SQLAlchemy Core

Удаление записей из базы данных с SQLAlchemy Core

Удаление данных — это критическая операция, которая требует точности и осмотрительности, особенно в производственных системах. SQLAlchemy Core предоставляет нам надежные инструменты для этой задачи, обеспечивая одновременно безопасность и удобство.

Основы удаления записей

from sqlalchemy import create_engine, MetaData, Table, delete

engine = create_engine('sqlite:///:memory:')
metadata = MetaData()
users = Table('users', metadata, autoload_with=engine)

# Удаление пользователя с ID 1
del_stmt = delete(users).where(users.c.id == 1)
engine.connect().execute(del_stmt)

Здесь используется функция delete(), чтобы создать запрос на удаление. С помощью метода where() задается условие, указывающее, какую именно запись следует удалить.

Удаление нескольких записей

# Удаление всех пользователей младше 18 лет
del_stmt = delete(users).where(users.c.age < 18)
engine.connect().execute(del_stmt)

Если условие в where() совпадает с несколькими записями, все они будут удалены.

Удаление с использованием комбинированных условий

from sqlalchemy import or_

# Удаление пользователей старше 60 лет или с именем 'Guest'
del_stmt = delete(users).where(or_(users.c.age > 60, users.c.name == 'Guest'))
engine.connect().execute(del_stmt)

С помощью функций and_() и or_() можно комбинировать условия для более сложных запросов на удаление.

Удаление всех записей

# Удаление всех записей из таблицы
del_stmt = delete(users)
engine.connect().execute(del_stmt)

Если метод where() не используется, запрос delete() удалит все записи из указанной таблицы. Следует быть очень осторожным с этой операцией!

Возвращение удаленных значений

Пример (для СУБД, поддерживающих эту функцию, например, PostgreSQL):

# Удаление пользователя с ID 2 и возвращение удаленной записи
del_stmt = delete(users).where(users.c.id == 2).returning(users)
result = engine.connect().execute(del_stmt)
print(result.fetchone())

Также как и при обновлении, некоторые СУБД позволяют возвращать удаленные строки после выполнения операции удаления.

Заключение

SQLAlchemy Core делает процесс удаления записей простым и контролируемым. Однако всегда следует помнить о том, что удаление данных — это необратимая операция. Поэтому рекомендуется применять максимальную осторожность и всегда делать резервные копии данных перед выполнением крупных или критически важных операций.

Содержание: