Видалення конкретних записів
Використовуючи 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)