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
Instructions
- Créez une instruction
deletepour supprimer des données de la tablecensus. Enregistrez-la dansdelete_stmt. - Ajoutez une clause
whereàdelete_stmtcontenant unand_pour filtrer les lignes qui ont'M'dans la colonnesexET36dans la colonneage. - Exécutez l’instruction de suppression.
- Soumettez la réponse pour afficher le
rowcountderesults, ainsi queto_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)