Удаление определённых записей
С помощью условия where() можно ограничить область действия инструкции delete и удалить только определённые записи. Например, Джейсон удалил все строки из таблицы employees с id равным 3, используя следующую инструкцию:
delete(employees).where(employees.columns.id == 3)
В этом упражнении вы удалите ВСЕ строки, в которых столбец sex содержит значение 'M', а столбец age — значение 36. В начале кода уже добавлен фрагмент, вычисляющий общее количество таких строк. Обязательно убедитесь, что именно столько строк будет удалено.
Это упражнение является частью курса
Введение в базы данных на Python
Инструкции к упражнению
- Создайте инструкцию
deleteдля удаления данных из таблицыcensusи сохраните её в переменнуюdelete_stmt. - Добавьте к
delete_stmtусловиеwhere, содержащееand_, чтобы отфильтровать строки, в которых столбецsexсодержит значение'M'И столбецage— значение36. - Выполните инструкцию удаления.
- Нажмите Отправить ответ, чтобы вывести
rowcountобъектаresults, а также значениеto_delete, которое показывает, сколько строк должно быть удалено. Эти числа должны совпадать — это важная проверка корректности результата!
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Build a statement to count records using the sex column for Men ('M') age 36: count_stmt
count_stmt = select([func.count(census.columns.sex)]).where(
and_(census.columns.sex == 'M',
census.columns.age == 36)
)
# Execute the select statement and use the scalar() fetch method to save the record count
to_delete = connection.execute(count_stmt).scalar()
# Build a statement to delete records from the census table: delete_stmt
delete_stmt = ____
# Append a where clause to target Men ('M') age 36: delete_stmt
delete_stmt = delete_stmt.____(
____(census.columns.sex == ____,
____ == ____)
)
# Execute the statement: results
results = connection.execute(____)
# Print affected rowcount and to_delete record count, make sure they match
print(results.rowcount, to_delete)