IniziaInizia gratis

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

Visualizza il corso

Istruzioni dell'esercizio

  • Crea un'istruzione delete per rimuovere dati dalla tabella census. Salvala come delete_stmt.
  • Aggiungi a delete_stmt una clausola where che contenga un and_ per filtrare le righe che hanno 'M' nella colonna sex E 36 nella colonna age.
  • Esegui l'istruzione di eliminazione.
  • Invia la risposta per stampare il rowcount di results, oltre a to_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)
Modifica ed esegui il codice