Kom igångKom igång gratis

Ta bort specifika poster

Med hjälp av en where()-sats kan du styra delete-satsen så att den bara tar bort vissa poster. Jason tog till exempel bort alla rader från tabellen employees med id 3 med följande delete-sats:

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

Här tar du bort ALLA rader som har 'M' i kolumnen sex och 36 i kolumnen age. Vi har inkluderat kod i början som beräknar det totala antalet sådana rader. Det är viktigt att kontrollera att det faktiskt är det antalet rader du tar bort.

Den här övningen är en del av kursen

Introduktion till databaser i Python

Visa kurs

Övningsinstruktioner

  • Bygg en delete-sats för att ta bort data från tabellen census. Spara den som delete_stmt.
  • Lägg till en where-sats till delete_stmt som innehåller ett and_ för att filtrera fram rader som har 'M' i kolumnen sex OCH 36 i kolumnen age.
  • Kör delete-satsen.
  • Skicka in svaret för att skriva ut rowcount från results, samt to_delete, som returnerar antalet rader som ska tas bort. Dessa bör stämma överens – det är en viktig kontroll!

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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)
Redigera och kör kod