Python MySQL - Supprimer les données

Pour supprimer des enregistrements d'une table MySQL, vous devez utiliser le DELETE FROMdéclaration. Pour supprimer des enregistrements spécifiques, vous devez utiliser la clause WHERE avec elle.

Syntaxe

Voici la syntaxe de la requête DELETE dans MYSQL -

DELETE FROM table_name [WHERE Clause]

Exemple

Supposons que nous ayons créé une table dans MySQL avec le nom EMPLOYEES comme -

mysql> CREATE TABLE EMPLOYEE(
   FIRST_NAME CHAR(20) NOT NULL,
   LAST_NAME CHAR(20),
   AGE INT,
   SEX CHAR(1),
   INCOME FLOAT
);
Query OK, 0 rows affected (0.36 sec)

Et si nous y avons inséré 4 enregistrements en utilisant des instructions INSERT comme -

mysql> INSERT INTO EMPLOYEE VALUES
   ('Krishna', 'Sharma', 19, 'M', 2000),
   ('Raj', 'Kandukuri', 20, 'M', 7000),
   ('Ramya', 'Ramapriya', 25, 'F', 5000),
   ('Mac', 'Mohan', 26, 'M', 2000);

Une instruction MySQL suivante supprime l'enregistrement de l'employé avec FIRST_NAME «Mac».

mysql> DELETE FROM EMPLOYEE WHERE FIRST_NAME = 'Mac';
Query OK, 1 row affected (0.12 sec)

Si vous récupérez le contenu du tableau, vous ne pouvez voir que 3 enregistrements puisque nous en avons supprimé un.

mysql> select * from EMPLOYEE;
+------------+-----------+------+------+--------+
| FIRST_NAME | LAST_NAME | AGE  | SEX  | INCOME |
+------------+-----------+------+------+--------+
| Krishna    | Sharma    | 20   | M    | 2000   |
| Raj        | Kandukuri | 21   | M    | 7000   |
| Ramya      | Ramapriya | 25   | F    | 5000   |
+------------+-----------+------+------+--------+
3 rows in set (0.00 sec)

Si vous exécutez l'instruction DELETE sans la clause WHERE, tous les enregistrements de la table spécifiée seront supprimés.

mysql> DELETE FROM EMPLOYEE;
Query OK, 3 rows affected (0.09 sec)

Si vous récupérez le contenu de la table, vous obtiendrez un ensemble vide comme indiqué ci-dessous -

mysql> select * from EMPLOYEE;
Empty set (0.00 sec)

Suppression des enregistrements d'une table à l'aide de python

L'opération DELETE est requise lorsque vous souhaitez supprimer certains enregistrements de votre base de données.

Pour supprimer les enregistrements dans une table -

  • importer mysql.connector paquet.

  • Créez un objet de connexion à l'aide de mysql.connector.connect() méthode, en lui passant le nom d'utilisateur, le mot de passe, l'hôte (par défaut facultatif: localhost) et la base de données (facultatif) en tant que paramètres.

  • Créez un objet curseur en invoquant le cursor() méthode sur l'objet de connexion créé ci-dessus.

  • Ensuite, exécutez le DELETE instruction en la passant comme paramètre au execute() méthode.

Exemple

Le programme suivant supprime tous les enregistrements de l'EMPLOYÉ dont l'ÂGE est supérieur à 20 -

import mysql.connector

#establishing the connection
conn = mysql.connector.connect(
   user='root', password='password', host='127.0.0.1', database='mydb')

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

#Retrieving single row
print("Contents of the table: ")
cursor.execute("SELECT * from EMPLOYEE")
print(cursor.fetchall())

#Preparing the query to delete records
sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (25)

try:
   # Execute the SQL command
   cursor.execute(sql)
   
   # Commit your changes in the database
   conn.commit()
except:
   # Roll back in case there is any error
   conn.rollback()

#Retrieving data
print("Contents of the table after delete operation ")
cursor.execute("SELECT * from EMPLOYEE")
print(cursor.fetchall())

#Closing the connection
conn.close()

Production

Contents of the table:
[('Krishna', 'Sharma', 22, 'M', 2000.0), 
   ('Raj', 'Kandukuri', 23, 'M', 7000.0), 
   ('Ramya', 'Ramapriya', 26, 'F', 5000.0), 
   ('Mac', 'Mohan', 20, 'M', 2000.0), 
   ('Ramya', 'Rama priya', 27, 'F', 9000.0)]

Contents of the table after delete operation:
[('Krishna', 'Sharma', 22, 'M', 2000.0), 
   ('Raj', 'Kandukuri', 23, 'M', 7000.0), 
   ('Mac', 'Mohan', 20, 'M', 2000.0)]