Python PostgreSQL - Bảng cập nhật
Bạn có thể sửa đổi nội dung của các bản ghi hiện có của một bảng trong PostgreSQL bằng cách sử dụng câu lệnh UPDATE. Để cập nhật các hàng cụ thể, bạn cần sử dụng mệnh đề WHERE cùng với nó.
Cú pháp
Sau đây là cú pháp của câu lệnh UPDATE trong PostgreSQL:
UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];
Thí dụ
Giả sử chúng ta đã tạo một bảng có tên CRICKETERS bằng truy vấn sau:
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=#
Và nếu chúng ta đã chèn 5 bản ghi vào nó bằng cách sử dụng câu lệnh INSERT như -
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
Câu lệnh sau sửa đổi tuổi của người chơi cricket, có tên đầu tiên là Shikhar -
postgres=# UPDATE CRICKETERS SET AGE = 45 WHERE FIRST_NAME = 'Shikhar' ;
UPDATE 1
postgres=#
Nếu bạn truy xuất bản ghi có FIRST_NAME là Shikhar, bạn thấy rằng giá trị tuổi đã được thay đổi thành 45 -
postgres=# SELECT * FROM CRICKETERS WHERE FIRST_NAME = 'Shikhar';
first_name | last_name | age | place_of_birth | country
------------+-----------+-----+----------------+---------
Shikhar | Dhawan | 45 | Delhi | India
(1 row)
postgres=#
Nếu bạn chưa sử dụng mệnh đề WHERE, giá trị của tất cả các bản ghi sẽ được cập nhật. Sau câu lệnh UPDATE tăng tuổi của tất cả các bản ghi trong bảng CRICKETERS lên 1 -
postgres=# UPDATE CRICKETERS SET AGE = AGE+1;
UPDATE 5
Nếu bạn truy xuất nội dung của bảng bằng lệnh SELECT, bạn có thể thấy các giá trị được cập nhật dưới dạng:
postgres=# SELECT * FROM CRICKETERS;
first_name | last_name | age | place_of_birth | country
------------+------------+-----+----------------+-------------
Jonathan | Trott | 39 | CapeTown | SouthAfrica
Kumara | Sangakkara | 42 | Matale | Srilanka
Virat | Kohli | 31 | Delhi | India
Rohit | Sharma | 33 | Nagpur | India
Shikhar | Dhawan | 46 | Delhi | India
(5 rows)
Cập nhật bản ghi bằng Python
Lớp con trỏ của psycopg2 cung cấp một phương thức có tên là phương thức execute (). Phương thức này chấp nhận truy vấn như một tham số và thực thi nó.
Do đó, để chèn dữ liệu vào bảng trong PostgreSQL bằng python -
Nhập khẩu psycopg2 gói hàng.
Tạo một đối tượng kết nối bằng cách sử dụng connect() bằng cách chuyển tên người dùng, mật khẩu, máy chủ lưu trữ (mặc định tùy chọn: localhost) và, cơ sở dữ liệu (tùy chọn) làm tham số cho nó.
Tắt chế độ cam kết tự động bằng cách đặt giá trị false thành thuộc tính autocommit.
Các cursor() phương pháp của Connectionlớp của thư viện psycopg2 trả về một đối tượng con trỏ. Tạo một đối tượng con trỏ bằng phương pháp này.
Sau đó, thực thi câu lệnh UPDATE bằng cách chuyển nó làm tham số cho phương thức execute ().
Thí dụ
Sau mã Python cập nhật nội dung của bảng Nhân viên và truy xuất kết quả:
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()
#Fetching all the rows before the update
print("Contents of the Employee table: ")
sql = '''SELECT * from EMPLOYEE'''
cursor.execute(sql)
print(cursor.fetchall())
#Updating the records
sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = 'M'"
cursor.execute(sql)
print("Table updated...... ")
#Fetching all the rows after the update
print("Contents of the Employee table after the update operation: ")
sql = '''SELECT * from EMPLOYEE'''
cursor.execute(sql)
print(cursor.fetchall())
#Commit your changes in the database
conn.commit()
#Closing the connection
conn.close()
Đầu ra
Contents of the Employee table:
[
('Ramya', 'Rama priya', 27, 'F', 9000.0),
('Vinay', 'Battacharya', 20, 'M', 6000.0),
('Sharukh', 'Sheik', 25, 'M', 8300.0),
('Sarmista', 'Sharma', 26, 'F', 10000.0),
('Tripthi', 'Mishra', 24, 'F', 6000.0)
]
Table updated......
Contents of the Employee table after the update operation:
[
('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)
]