DELETE | Supprimer des données en MySQL avec Python
La commande DELETE est utilisée pour supprimer les lignes qui ne sont plus nécessaires dans une table de base de données. Il supprime la ligne entière de la table. La commande DELETE est pratique pour supprimer les données temporaires ou obsolètes de votre base de données.
La requête DELETE dans MySQL peut supprimer plusieurs lignes d’une table dans une seule requête. Cela présente un avantage lors de la suppression d’un grand nombre de lignes d’une table de base de données.
Une fois qu’une ligne a été supprimée, elle ne peut pas être récupérée. Il est donc fortement recommandé d’effectuer des sauvegardes de base de données avant de supprimer toutes les données de la base de données. Cela peut vous permettre de restaurer la base de données et d’afficher les données ultérieurement si nécessaire.
Exemple:
L’exemple suivant supprime tout personne dont l’age est inférieur à 18 :
# -*- coding: utf-8 -*- import mysql.connector #connexion au base de données db = mysql.connector.connect( host = "localhost", user = "root", password = "", database = "my_db" ) #créer un curseur de base de données pour effectuer des opérations SQL cur = db.cursor() sql = "DELETE FROM person WHERE age < 18" #exécuter le curseur avec la méthode execute() et transmis la requête SQL cur.execute(sql) #valider la transaction db.commit() #afficher le nombre de lignes supprimées print(cur.rowcount, " lignes supprimées")
Sortie:
10 lignes supprimées
Empêcher l’injection SQL
Lorsque des valeurs de requête sont fournies par l’utilisateur, vous devez échapper les valeurs.
Il s’agit d’empêcher les injections SQL, qui est une technique de piratage Web courante pour détruire ou abuser votre base de données.
Le module mysql.connector a des méthodes pour échapper aux valeurs de requête.
Dans l’exemple suivant nous allons échapper les valeurs de requête à l’aide de l’opérateur %s:
# -*- coding: utf-8 -*- import mysql.connector #connexion au base de données db = mysql.connector.connect( host = "localhost", user = "root", password = "", database = "my_db" ) #créer un curseur de base de données pour effectuer des opérations SQL cur = db.cursor() sql = "DELETE FROM person WHERE age < %s" age = ("18", ) #exécuter le curseur avec la méthode execute() et transmis la requête SQL cur.execute(sql, age) #valider la transaction db.commit() #afficher le nombre de lignes supprimées print(cur.rowcount, "lignes supprimées")
Sortie:
10 lignes supprimées