НачатьНачать бесплатно

Удаление определённых записей

С помощью условия 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)
Редактировать и запускать код