Python PostgreSQL - Elimina dati
È possibile eliminare i record in una tabella esistente utilizzando il DELETE FROMdichiarazione del database PostgreSQL. Per rimuovere record specifici, è necessario utilizzare la clausola WHERE insieme ad essa.
Sintassi
Di seguito è riportata la sintassi della query DELETE in PostgreSQL:
DELETE FROM table_name [WHERE Clause]
Esempio
Supponiamo di aver creato una tabella con il nome CRICKETERS utilizzando la seguente query:
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=#
E se abbiamo inserito 5 record in esso utilizzando le istruzioni INSERT come -
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 seguente dichiarazione cancella il record del giocatore di cricket il cui cognome è "Sangakkara". -
postgres=# DELETE FROM CRICKETERS WHERE LAST_NAME = 'Sangakkara';
DELETE 1
Se recuperi il contenuto della tabella utilizzando l'istruzione SELECT, puoi vedere solo 4 record poiché ne abbiamo eliminato uno.
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)
Se si esegue l'istruzione DELETE FROM senza la clausola WHERE, tutti i record della tabella specificata verranno eliminati.
postgres=# DELETE FROM CRICKETERS;
DELETE 4
Poiché hai cancellato tutti i record, se provi a recuperare il contenuto della tabella CRICKETERS, usando l'istruzione SELECT otterrai un set di risultati vuoto come mostrato di seguito -
postgres=# SELECT * FROM CRICKETERS;
first_name | last_name | age | place_of_birth | country
------------+-----------+-----+----------------+---------
(0 rows)
Eliminazione dei dati utilizzando python
La classe del cursore di psycopg2 fornisce un metodo con nome metodo execute (). Questo metodo accetta la query come parametro e la esegue.
Pertanto, per inserire dati in una tabella in PostgreSQL usando python -
Importare psycopg2 pacchetto.
Crea un oggetto connessione usando il connect() , passando il nome utente, la password, l'host (predefinito opzionale: localhost) e il database (opzionale) come parametri ad esso.
Disattiva la modalità di commit automatico impostando false come valore nell'attributo autocommit.
Il cursor()metodo della classe Connection della libreria psycopg2 restituisce un oggetto cursore. Crea un oggetto cursore utilizzando questo metodo.
Quindi, eseguire l'istruzione UPDATE passandola come parametro al metodo execute ().
Esempio
Il codice Python che segue elimina i record della tabella EMPLOYEE con valori di età maggiori di 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()
Produzione
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)]