Python PostgreSQL - Usuń dane
Możesz usunąć rekordy w istniejącej tabeli za pomocą DELETE FROMzestawienie bazy danych PostgreSQL. Aby usunąć określone rekordy, musisz użyć wraz z nią klauzuli WHERE.
Składnia
Poniżej znajduje się składnia zapytania DELETE w PostgreSQL -
DELETE FROM table_name [WHERE Clause]
Przykład
Załóżmy, że utworzyliśmy tabelę o nazwie CRICKETERS, używając następującego zapytania -
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=#
A jeśli wstawiliśmy do niego 5 rekordów, używając instrukcji INSERT jako -
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
Poniższe stwierdzenie usuwa wpis krykiecisty, którego nazwisko brzmi „Sangakkara”.
postgres=# DELETE FROM CRICKETERS WHERE LAST_NAME = 'Sangakkara';
DELETE 1
Jeśli pobierzesz zawartość tabeli za pomocą instrukcji SELECT, zobaczysz tylko 4 rekordy, ponieważ jeden został usunięty.
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)
Jeśli wykonasz instrukcję DELETE FROM bez klauzuli WHERE, wszystkie rekordy z określonej tabeli zostaną usunięte.
postgres=# DELETE FROM CRICKETERS;
DELETE 4
Ponieważ usunąłeś wszystkie rekordy, jeśli spróbujesz odzyskać zawartość tabeli CRICKETERS, używając instrukcji SELECT otrzymasz pusty zestaw wyników, jak pokazano poniżej -
postgres=# SELECT * FROM CRICKETERS;
first_name | last_name | age | place_of_birth | country
------------+-----------+-----+----------------+---------
(0 rows)
Usuwanie danych za pomocą Pythona
Klasa kursora psycopg2 dostarcza metodę o nazwie metoda execute (). Ta metoda akceptuje zapytanie jako parametr i wykonuje je.
Dlatego, aby wstawić dane do tabeli w PostgreSQL za pomocą Pythona -
Import psycopg2 pakiet.
Utwórz obiekt połączenia przy użyciu connect() metody, przekazując jako parametry nazwę użytkownika, hasło, host (opcjonalnie domyślnie: localhost) i bazę danych (opcjonalnie).
Wyłącz tryb automatycznego zatwierdzania, ustawiając false jako wartość atrybutu autocommit.
Plik cursor() metoda Connectionklasa biblioteki psycopg2 zwraca obiekt kursora. Utwórz obiekt kursora za pomocą tej metody.
Następnie wykonaj instrukcję DELETE, przekazując ją jako parametr do metody execute ().
Przykład
Podążanie za kodem Pythona usuwa rekordy tabeli EMPLOYEE z wartościami wiekowymi powyżej 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()
Wynik
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)
]