Python PostgreSQL - Verileri Sil

Mevcut bir tablodaki kayıtları silebilirsiniz. DELETE FROMPostgreSQL veritabanı açıklaması. Belirli kayıtları kaldırmak için, onunla birlikte WHERE cümlesini kullanmanız gerekir.

Sözdizimi

PostgreSQL'de DELETE sorgusunun sözdizimi aşağıdadır -

DELETE FROM table_name [WHERE Clause]

Misal

Aşağıdaki sorguyu kullanarak CRICKETERS adında bir tablo oluşturduğumuzu varsayalım -

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

Ve INSERT ifadelerini kullanarak 5 kayıt eklediysek -

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

Aşağıdaki açıklama, soyadı 'Sangakkara' olan kriketçinin rekorunu siliyor. -

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

SELECT deyimini kullanarak tablonun içeriğini alırsanız, birini sildiğimiz için yalnızca 4 kaydı görebilirsiniz.

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)

DELETE FROM deyimini WHERE yan tümcesi olmadan yürütürseniz, belirtilen tablodaki tüm kayıtlar silinecektir.

postgres=# DELETE FROM CRICKETERS;
DELETE 4

Tüm kayıtları sildiğiniz için, CRICKETERS tablosunun içeriğini almaya çalışırsanız, SELECT deyimini kullanarak aşağıda gösterildiği gibi boş bir sonuç kümesi alırsınız -

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

Python kullanarak verileri silme

Psycopg2'nin imleç sınıfı execute () adıyla bir yöntem sağlar. Bu yöntem, sorguyu bir parametre olarak kabul eder ve çalıştırır.

Bu nedenle, python kullanarak PostgreSQL'de bir tabloya veri eklemek -

  • İthalat psycopg2 paketi.

  • Kullanarak bir bağlantı nesnesi oluşturun connect() yöntem, kullanıcı adını, parolayı, ana bilgisayarı (isteğe bağlı varsayılan: localhost) ve veritabanını (isteğe bağlı) parametre olarak ona ileterek.

  • Özelliğe değer olarak false değerini ayarlayarak otomatik kesinleştirme modunu kapatın. autocommit.

  • cursor()psycopg2 kütüphanesinin Connection sınıfının yöntemi bir imleç nesnesi döndürür. Bu yöntemi kullanarak bir imleç nesnesi oluşturun.

  • Ardından, UPDATE deyimini bir parametre olarak execute () yöntemine ileterek yürütün.

Misal

Python kodunu takiben EMPLOYEE tablosunun 25'den büyük yaş değerlerine sahip kayıtlarını siler -

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

Çıktı

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