Usuwanie wybranych rekordów
Dzięki klauzuli where() możesz ograniczyć działanie instrukcji delete tylko do wybranych rekordów. Na przykład Jason usunął wszystkie wiersze z tabeli employees, które miały wartość 3 w kolumnie id, używając następującej instrukcji:
delete(employees).where(employees.columns.id == 3)
W tym ćwiczeniu usuniesz WSZYSTKIE wiersze, które mają wartość 'M' w kolumnie sex oraz wartość 36 w kolumnie age. Na początku dodaliśmy kod obliczający łączną liczbę takich wierszy. Ważne jest, aby upewnić się, że faktycznie usuwasz dokładnie tyle rekordów.
To ćwiczenie jest częścią kursu
Wprowadzenie do baz danych w Pythonie
Instrukcje do ćwiczenia
- Zbuduj instrukcję
delete, która usunie dane z tabelicensus. Zapisz ją jakodelete_stmt. - Dołącz do
delete_stmtklauzulęwherezawierającąand_, która odfiltruje wiersze mające wartość'M'w kolumniesexORAZ wartość36w kolumnieage. - Wykonaj instrukcję usuwania.
- Prześlij odpowiedź, aby wyświetlić wartość
rowcountzmiennejresultsoraz zmiennąto_delete, która zwraca liczbę wierszy do usunięcia. Obie wartości powinny być zgodne – to ważna weryfikacja poprawności działania kodu!
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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)