Python PostgreSQL - Eliminar datos

Puede eliminar los registros en una tabla existente usando el DELETE FROMdeclaración de la base de datos PostgreSQL. Para eliminar registros específicos, debe usar la cláusula WHERE junto con ella.

Sintaxis

A continuación se muestra la sintaxis de la consulta DELETE en PostgreSQL:

DELETE FROM table_name [WHERE Clause]

Ejemplo

Supongamos que hemos creado una tabla con el nombre CRICKETERS utilizando la siguiente consulta:

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=#

Y si hemos insertado 5 registros usando instrucciones INSERT como:

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 siguiente declaración borra el registro del jugador de críquet cuyo apellido es 'Sangakkara'.

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

Si recupera el contenido de la tabla usando la instrucción SELECT, puede ver solo 4 registros ya que hemos eliminado 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)

Si ejecuta la instrucción DELETE FROM sin la cláusula WHERE, se eliminarán todos los registros de la tabla especificada.

postgres=# DELETE FROM CRICKETERS;
DELETE 4

Dado que ha eliminado todos los registros, si intenta recuperar el contenido de la tabla CRICKETERS, utilizando la instrucción SELECT obtendrá un conjunto de resultados vacío como se muestra a continuación:

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

Eliminar datos con Python

La clase de cursor de psycopg2 proporciona un método con el nombre método execute (). Este método acepta la consulta como parámetro y la ejecuta.

Por lo tanto, para insertar datos en una tabla en PostgreSQL usando python:

  • Importar psycopg2 paquete.

  • Cree un objeto de conexión utilizando el connect() método, pasando el nombre de usuario, contraseña, host (predeterminado opcional: localhost) y base de datos (opcional) como parámetros.

  • Desactive el modo de confirmación automática estableciendo falso como valor para el atributo autocommit.

  • los cursor() método del ConnectionLa clase de la biblioteca psycopg2 devuelve un objeto cursor. Cree un objeto de cursor utilizando este método.

  • Luego, ejecute la instrucción DELETE pasándola como parámetro al método execute ().

Ejemplo

El siguiente código de Python borra los registros de la tabla EMPLOYEE con valores de edad superiores a 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()

Salida

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)
]