ПочатиПочніть безкоштовно

Видалення конкретних записів

Використовуючи where(), ви можете спрямувати інструкцію delete, щоб видаляти лише певні записи. Наприклад, Джейсон видалив усі рядки з таблиці employees, у яких id дорівнював 3, за допомогою такої інструкції видалення:

delete(employees).where(employees.columns.id == 3) 

Тут ви видалите ВСІ рядки, у яких у стовпці sex значення 'M', а у стовпці age36. На початку ми додали код, який обчислює загальну кількість таких рядків. Важливо переконатися, що саме стільки рядків ви й видалите.

Ця вправа є частиною курсу

Вступ до баз даних у Python

Переглянути курс

Інструкції до вправи

  • Створіть інструкцію delete для видалення даних з таблиці census. Збережіть її в delete_stmt.
  • Додайте до delete_stmt умову where, що містить and_, щоб відфільтрувати рядки, у яких у стовпці sex значення 'M' ТА у стовпці age36.
  • Виконайте інструкцію видалення.
  • Надішліть відповідь, щоб вивести 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)
Редагувати та запускати код