Eliminare record specifici
Usando una clausola where(), puoi indirizzare l'istruzione delete per rimuovere solo determinati record. Ad esempio, Jason ha eliminato tutte le righe dalla tabella employees che avevano id 3 con la seguente istruzione di eliminazione:
delete(employees).where(employees.columns.id == 3)
Qui eliminerai TUTTE le righe che hanno 'M' nella colonna sex e 36 nella colonna age. Abbiamo incluso del codice all'inizio che calcola il numero totale di queste righe. È importante verificare che questo corrisponda al numero di righe che effettivamente elimini.
Questo esercizio fa parte del corso
Introduzione ai database in Python
Istruzioni dell'esercizio
- Crea un'istruzione
deleteper rimuovere dati dalla tabellacensus. Salvala comedelete_stmt. - Aggiungi a
delete_stmtuna clausolawhereche contenga unand_per filtrare le righe che hanno'M'nella colonnasexE36nella colonnaage. - Esegui l'istruzione di eliminazione.
- Invia la risposta per stampare il
rowcountdiresults, oltre ato_delete, che restituisce il numero di righe che dovrebbero essere eliminate. I due valori dovrebbero coincidere: è un controllo di coerenza importante!
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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)