oujood.com

Supprimer des enregistrements d'une table MySQL, en utilisant l'instruction DELETE FROM

Ce cours montre comment exécuter la requête SQL DELETE à partir de Python pour supprimer des données d'une table de base de données MySQL.
Pour supprimer des enregistrements d'une table MySQL, vous devez utiliser l'instruction DELETE FROM. Pour supprimer des enregistrements spécifiques, vous devez utiliser la clause WHERE en même temps.

chercher |

Python Supprimer les données d'une table MySQL

Les conditions requises

Avant d'aller plus loin, veuillez vous assurer que vous avez les éléments suivants en place :
Nom d'utilisateur et mot de passe pour connecter MySQL
Nom de la table MySQL dans laquelle vous voulez supprimes des données. Donc votre table doit contenir des données.
Si ce n'est pas le cas inserer y des donnnées

Pour effectuer une opération de suppression, j'utilise une table présente sur mon serveur MySQL.

Si une table n'est pas présente dans votre serveur MySQL, vous pouvez vous référer à notre article pour créer une table MySQL en Python.

Et à notre article pour insérer des données dans une table MySQL en Python.

Python : Supprimer un seul rang d'une table MySQL

Pour supprimer un enregistrement d'une table SQL, on utilise le mot clé DELETE FROM.

La syntaxe pour supprimer un enregistrement est la suivante :

DELETE FROM nom_table WHERE condition

Dans l'exmple suivant : Pour supprimer un enregistrement d'une table SQL, Nous utilisons le mot clé DELETE FROM. et la méthode rowcount de l'objet curseur pour retourner le nombre de lignes supprimées après l'exécution de la requête donnée.

Exemple : Comment supprimer une ligne dans MySQL à l'aide de Python

1. Connectez-vous à MySQL depuis Python
Reportez-vous à Connexion à la base de données MySQL en Python pour vous connecter à la base de données MySQL depuis Python à l'aide du module MySQL Connector.

2. Définissez une requête SQL de suppression
Ensuite, préparez une requête de suppression SQL pour supprimer une ligne d'une table. La requête de suppression contient l'enregistrement à supprimer en fonction d'une condition placée dans la clause where de la requête. Par exemple, DELETE FROM Ma_table WHERE id=10

3. Obtenir un objet curseur de la connexion
Ensuite, utilisez la méthode connection.cursor() pour créer un objet curseur. Cette méthode crée un nouvel objet MySQLCursor.

4. Exécution de la requête de suppression à l'aide de la méthode execute()
Exécutez la requête de suppression à l'aide de la méthode cursor.execute(). Cette méthode exécute l'opération stockée dans la requête de suppression.
Après une opération de suppression réussie, la méthode execute() nous renvoie le nombre de lignes affectées que nous recupererons par la suite.

5. Validez vos modifications
Après l'exécution réussie d'une opération de suppression, rendez les changements persistants dans une base de données en utilisant la méthode commit() de la classe connexion.

6. Obtenez le nombre de lignes affectées
Utilisez la méthode cursor.rowcount pour obtenir le nombre de lignes affectées. Ce nombre dépend du nombre de lignes que vous supprimez.

Vous pouvez également exécuter une requête MySQL select à partir de Python pour vérifier le résultat avant la suppression ou | et après.

En fin fermez l'objet curseur et la connexion à la base de données
Utilisez la méthode cursor.clsoe() et connection.clsoe() pour fermer les connexions ouvertes une fois votre travail terminé.

Exemple : Ici nous nous utilisons la base de données avec la table créés dans les chapitres précédents.

  Copier le code

# Importation des module nécessaires
import mysql.connector

try:
#Créer une connexion à la base de données
    conn = mysql.connector.connect(
    host = "localhost",
    user = "votre nom utilisateur",
	passwd = "votre mot de passe",
    database="oujood_py"
    )
# préparation d'un objet curseur
    curseurObjet = conn.cursor()
# afficher l'eregistrement avant la suppression (optionnel)
    print("L'eregistrement avant la suppression de la table EMPLOYEE : \n")
    sql_select_requete = "select * from EMPLOYEE where PRENOM  = 'MARCUS'"
    curseurObjet.execute(sql_select_requete)
    record = curseurObjet.fetchall()
    print(record)
    print("\n")
# Préparation de la requête SQL pour supprimer (optionnel)
# un enregistrement dans la base de données.
    sql_Delete_requete = "Delete from EMPLOYEE where PRENOM  = 'MARCUS'"
    curseurObjet.execute(sql_Delete_requete)
    conn.commit()
    print("Le nombre d'enregistrement supprimé est : ", curseurObjet.rowcount)

# Vérifier en utilisant la requête select (optionnel)
    curseurObjet.execute(sql_select_requete)
    records = curseurObjet.fetchall()
    if len(records) == 0:
        print("Enregistrement supprimé avec succès  ")

except mysql.connector.Error as error:
    print("Échec de la suppression de l'enregistrement de la table : {}".format(error))
finally:
    if conn.is_connected():
        curseurObjet.close()
        conn.close()
        print("La connexion MySQL est fermée")

Utiliser une variable Python dans une requête SQL pour supprimer des données de la table

Parfois, nous avons besoin de la participation de l'utilisateur, par exemple, lorsque l'utilisateur supprime ses données personnelles de son portail web ou tout autre détail via l'interface utilisateur. Dans un tel scénario, il est toujours préférable d'utiliser une requête paramétrée.

Une instruction préparée ou une requête paramétrée utilise des caractères de remplissage (%s ) à l'intérieur de toute instruction SQL qui contient des données provenant des utilisateurs. Par exemple, en utilisant une requête paramétrée, nous pouvons passer des variables Python comme paramètre de requête dans laquelle des caractères de remplissage (%s ) sont utilisés pour les paramètres.

Exemple:

  Copier le code

# Importation des module nécessaires
import mysql.connector

try:
#Créer une connexion à la base de données
    conn = mysql.connector.connect(
    host = "localhost",
    user = "votre nom utilisateur",
	passwd = "votre mot de passe",
    database="oujood_py"
    )
# préparation d'un objet curseur
    curseurObjet = conn.cursor()

# Préparation de la requête SQL pour supprimer (optionnel)
    sql_Delete_requete = "Delete from EMPLOYEE where PRENOM  = %s"
    
# L'enregistrement à supprimer dans la base de données.
    Prenom_oujood = "MARCUS"    
    curseurObjet.execute(sql_Delete_requete, (Prenom_oujood,))
    conn.commit()
    print("Le nombre d'enregistrement supprimé est : ", curseurObjet.rowcount,"\n")
    print("Enregistrement supprimé avec succès  \n")

except mysql.connector.Error as error:
    print("Échec de la suppression de l'enregistrement de la table : {}".format(error,"\n"))
finally:
    if conn.is_connected():
        curseurObjet.close()
        conn.close()
        print("La connexion MySQL est fermée")

Python Supprimer plusieurs lignes d'une table MySQL

Parfois, nous avons besoin de supprimer un nombre N de lignes qui correspondent à une condition spécifique. Par exemple, vous souhaitez supprimer les données des employés de la table employee qui ont quitté la société. Vous pouvez supprimer plusieurs lignes de la table MySQL à l'aide d'une seule requête SQL de suppression en Python.

Exemple : Dans cet exemple nous supposons que la société décide de ne plus employer des personne dont l'âge est supérieurs ou égal à 45 ans.

  Copier le code

# Importation des module nécessaires
import mysql.connector

try:
#Créer une connexion à la base de données
    conn = mysql.connector.connect(
    host = "localhost",
    user = "root",
    passwd = "193Mill$",
    database="oujood_py"
    )
# préparation d'un objet curseur
    curseurObjet = conn.cursor()

# Préparation de la requête SQL pour supprimer (optionnel)
    sql_Delete_requete = "Delete from EMPLOYEE where AGE >= %s"
    
# L'enregistrement à supprimer dans la base de données.
    Age_oujood = 45 
    curseurObjet.execute(sql_Delete_requete, (Age_oujood,))
    conn.commit()
    print("Le nombre d'enregistrement supprimé est : ", curseurObjet.rowcount,"\n")
    print("Enregistrement supprimé avec succès  \n")

except mysql.connector.Error as error:
    print("Échec de la suppression de l'enregistrement de la table : {}".format(error,"\n"))
finally:
    if conn.is_connected():
        curseurObjet.close()
        conn.close()
        print("La connexion MySQL est fermée")

Prévention de l'injection SQL

Comme nous allons suprimer les enregistrements dynamiquement, il faut prévenir l'injection SQL.

Il est considéré comme une bonne pratique d'échapper les valeurs de toute requête, y compris dans les déclarations de suppression.

Cela permet d'éviter les injections SQL, qui sont une technique de piratage web courante pour détruire ou utiliser abusivement votre base de données.

Le module mysql.connector utilise le caractère de remplacement %s pour échapper les valeurs dans l'instruction de suppression.

Il est possible de supprimer toutes les lignes d'une table de base de données MySQL à l'aide d'une requête SQL en omettant la clause WHERE et tous les enregistrements seront supprimés !





Voir aussi nos tutoriel :

Utiliser l'extension XSL de PHP 5 pour effectuer des Transformations XSL

Utiliser l'extension XSL de PHP 5 pour effectuer des Transformations XSL

XPATH axes

XPATH axes

localeconv, localeconv

Lit la configuration locale