Python PostgreSQL - Supprimer des données

Vous pouvez supprimer les enregistrements d'une table existante à l'aide du DELETE FROMdéclaration de la base de données PostgreSQL. Pour supprimer des enregistrements spécifiques, vous devez utiliser la clause WHERE avec elle.

Syntaxe

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

DELETE FROM table_name [WHERE Clause]

Exemple

Supposons que nous ayons créé une table avec le nom CRICKETERS en utilisant la requête suivante -

postgres=# CREATE TABLE CRICKETERS ( 
   First_Name VARCHAR(255), Last_Name VARCHAR(255), Age int, 
   Place_Of_Birth VARCHAR(255), Country VARCHAR(255)
);
CREATE TABLE
postgres=#

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

postgres=# insert into CRICKETERS values ('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
INSERT 0 1
postgres=# insert into CRICKETERS values ('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
INSERT 0 1
postgres=# insert into CRICKETERS values ('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
INSERT 0 1
postgres=# insert into CRICKETERS values ('Virat', 'Kohli', 30, 'Delhi', 'India');
INSERT 0 1
postgres=# insert into CRICKETERS values ('Rohit', 'Sharma', 32, 'Nagpur', 'India');
INSERT 0 1

La déclaration suivante supprime l'enregistrement du joueur de cricket dont le nom de famille est «Sangakkara».

postgres=# DELETE FROM CRICKETERS WHERE LAST_NAME = 'Sangakkara';
DELETE 1

Si vous récupérez le contenu de la table à l'aide de l'instruction SELECT, vous ne pouvez voir que 4 enregistrements puisque nous en avons supprimé un.

postgres=# SELECT * FROM CRICKETERS;
 first_name | last_name | age | place_of_birth | country
------------+-----------+-----+----------------+-------------
Jonathan    |     Trott |  39 | CapeTown       | SouthAfrica
Virat       |     Kohli |  31 | Delhi          | India
Rohit       |    Sharma |  33 | Nagpur         | India
Shikhar     |    Dhawan |  46 | Delhi          | India

(4 rows)

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

postgres=# DELETE FROM CRICKETERS;
DELETE 4

Puisque vous avez supprimé tous les enregistrements, si vous essayez de récupérer le contenu de la table CRICKETERS, en utilisant l'instruction SELECT, vous obtiendrez un jeu de résultats vide comme indiqué ci-dessous -

postgres=# SELECT * FROM CRICKETERS;
 first_name | last_name | age | place_of_birth | country
------------+-----------+-----+----------------+---------
(0 rows)

Suppression de données à l'aide de Python

La classe de curseur de psycopg2 fournit une méthode avec le nom de méthode execute (). Cette méthode accepte la requête en tant que paramètre et l'exécute.

Par conséquent, pour insérer des données dans une table dans PostgreSQL en utilisant python -

  • Importer psycopg2 paquet.

  • Créez un objet de connexion à l'aide de 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.

  • Désactivez le mode de validation automatique en définissant false comme valeur de l'attribut autocommit.

  • le cursor() méthode de la ConnectionLa classe de la bibliothèque psycopg2 renvoie un objet curseur. Créez un objet curseur à l'aide de cette méthode.

  • Ensuite, exécutez l'instruction DELETE en la passant en tant que paramètre à la méthode execute ().

Exemple

Le code Python suivant supprime les enregistrements de la table EMPLOYEE avec des valeurs d'âge supérieures à 25 -

import psycopg2
#establishing the connection
conn = psycopg2.connect(
   database="mydb", user='postgres', password='password', host='127.0.0.1', port= '5432'
)

#Setting auto commit false
conn.autocommit = True

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

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

#Deleting records
cursor.execute('''DELETE FROM EMPLOYEE WHERE AGE > 25''')

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

#Commit your changes in the database
conn.commit()

#Closing the connection
conn.close()

Production

Contents of the table:
[
   ('Ramya', 'Rama priya', 27, 'F', 9000.0), 
   ('Sarmista', 'Sharma', 26, 'F', 10000.0), 
   ('Tripthi', 'Mishra', 24, 'F', 6000.0), 
   ('Vinay', 'Battacharya', 21, 'M', 6000.0), 
   ('Sharukh', 'Sheik', 26, 'M', 8300.0)
]
Contents of the table after delete operation:
[  
   ('Tripthi', 'Mishra', 24, 'F', 6000.0), 
   ('Vinay', 'Battacharya', 21, 'M', 6000.0)
]