CommencerCommencer gratuitement

Supprimer des enregistrements spécifiques

En utilisant une clause where(), vous pouvez cibler l’instruction delete pour ne supprimer que certains enregistrements. Par exemple, Jason a supprimé toutes les lignes de la table employees dont id était 3 avec l’instruction suivante :

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

Ici, vous allez supprimer TOUTES les lignes qui ont 'M' dans la colonne sex et 36 dans la colonne age. Nous avons inclus au début du code qui calcule le nombre total de ces lignes. Il est important de vérifier que c’est bien le nombre de lignes que vous supprimez réellement.

Cet exercice fait partie du cours

Introduction aux bases de données en Python

Afficher le cours

Instructions

  • Créez une instruction delete pour supprimer des données de la table census. Enregistrez-la dans delete_stmt.
  • Ajoutez une clause where à delete_stmt contenant un and_ pour filtrer les lignes qui ont 'M' dans la colonne sex ET 36 dans la colonne age.
  • Exécutez l’instruction de suppression.
  • Soumettez la réponse pour afficher le rowcount de results, ainsi que to_delete, qui renvoie le nombre de lignes devant être supprimées. Les deux doivent correspondre ; c’est un contrôle de cohérence important !

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# 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)
Modifier et exécuter le code