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