
Удаление данных — это критическая операция, которая требует точности и осмотрительности, особенно в производственных системах. 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 делает процесс удаления записей простым и контролируемым. Однако всегда следует помнить о том, что удаление данных — это необратимая операция. Поэтому рекомендуется применять максимальную осторожность и всегда делать резервные копии данных перед выполнением крупных или критически важных операций.
Содержание: