Giới thiệu
PostgreSQL là một trong những hệ thống quản lý cơ sở dữ liệu quan hệ tiên tiến và được sử dụng rộng rãi nhất. Nó cực kỳ phổ biến vì nhiều lý do, một vài trong số đó bao gồm nó là nguồn mở, khả năng mở rộng của nó và khả năng xử lý nhiều loại ứng dụng khác nhau và tải trọng khác nhau.
Với Python, bạn có thể dễ dàng thiết lập kết nối với cơ sở dữ liệu PostgreSQL của mình. Có rất nhiều trình điều khiển Python cho PostgreSQL, với “psycopg” là phổ biến nhất. Phiên bản hiện tại của nó là psycopg2.
Trong bài viết này, chúng ta sẽ thảo luận về cách truy cập cơ sở dữ liệu PostgreSQL trong Python bằng trình điều khiển psycopg2.
Mô-đun psycopg2
Chúng ta có thể tích hợp Postgres với Python bằng cách sử dụng mô-đun psycopg2. psycopg2 là một bộ chuyển đổi cơ sở dữ liệu Postgres cho Python. Để sử dụng mô-đun này, trước tiên bạn nên cài đặt nó. Điều này có thể được thực hiện bằng cách sử dụng lệnh, như được hiển thị dưới đây:
pip3 install psycopg2
Lưu ý rằng chúng ta đang sử dụng Python 3.5, do đó tôi đã sử dụng pip3 thay vì pip.
Khi mô-đun đã được cài đặt, bạn có thể sử dụng nó để kết nối với cơ sở dữ liệu của mình trong ứng dụng của mình.
Kết nối với Cơ sở dữ liệu
Để kết nối với cơ sở dữ liệu của bạn, trước tiên bạn nên tạo một đối tượng kết nối đại diện cho cơ sở dữ liệu. Tiếp theo, bạn nên tạo một đối tượng con trỏ để giúp bạn thực hiện các câu lệnh SQL của mình.
Ví dụ sau đây cho thấy cách thiết lập kết nối với cơ sở dữ liệu có tên là “postgres”:
import psycopg2 con = psycopg2.connect(database="postgres", user="postgres", password="", host="127.0.0.1", port="5432") print("Database opened successfully")
Output:
Database opened successfully
Sau đây là danh sách các tham số đã được sử dụng:
database
: Tên của cơ sở dữ liệu bạn cần kết nối.user
: Tên người dùng được sử dụng để xác thực.password
: Mật khẩu cơ sở dữ liệu cho người dùng.host
: Địa chỉ của máy chủ cơ sở dữ liệu. Ví dụ: tên miền, “localhost”, hoặc địa chỉ IP.port
: Số cổng. Nếu bạn không cung cấp điều này, mặc định sẽ được sử dụng, đó là 5432.
Lưu ý rằng các giá trị cho các tham số trên phải chính xác để kết nối thành công. Nếu không, một ngoại lệ sẽ được tạo ra. Output trong code trên cho thấy kết nối với cơ sở dữ liệu đã được thiết lập thành công.
Tạo Bảng
Để tạo bảng Postgres trong Python, chúng ta sử dụng câu lệnh SQL. Truy vấn này nên được thực hiện sau khi thiết lập kết nối với cơ sở dữ liệu. Chúng ta cũng tạo một đối tượng con trỏ bằng cách gọi phương pháp thuộc về đối tượng. Đối tượng này được sử dụng để thực sự thực hiện các lệnh của bạn .
Sau đó, chúng ta gọi phương thức của đối tượng để giúp tạo bảng. Cuối cùng, chúng ta cần commit và đóng kết nối. “commit” kết nối yêu cầu driver gửi các lệnh đến cơ sở dữ liệu.
Ví dụ sau đây cho thấy điều này:
import psycopg2 con = psycopg2.connect(database="postgres", user="postgres", password="Kaliakakya", host="127.0.0.1", port="5432") print("Database opened successfully") cur = con.cursor() cur.execute('''CREATE TABLE STUDENT (ADMISSION INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, COURSE CHAR(50), DEPARTMENT CHAR(50));''') print("Table created successfully") con.commit() con.close()
Output:
Database opened successfully Table created successfully
Phương thức này giúp chúng ta áp dụng các thay đổi mà chúng ta đã thực hiện cho cơ sở dữ liệu và những thay đổi này không thể được hoàn tác nếu chạy thành công. Phương pháp này sẽ đóng kết nối với cơ sở dữ liệu.
Tại thời điểm này, chúng ta đã tạo ra một bảng với 4 cột, tất cả đều có các loại dữ liệu khác nhau. Đầu ra trên cho thấy bảng đã được tạo thành công.
Insert Dữ liệu
Chúng ta có thể insert một bản ghi hoặc nhiều bản ghi vào bảng cơ sở dữ liệu Postgres. Một lần nữa, trước tiên chúng ta phải thiết lập kết nối với máy chủ cơ sở dữ liệu bằng cách gọi function. Tiếp theo, chúng ta nên tạo một đối tượng con trỏ bằng cách gọi phương thức. Cuối cùng, chúng ta chạy câu lệnh thông qua phương thức để thêm dữ liệu vào bảng.
Đây là một ví dụ:
import psycopg2 con = psycopg2.connect(database="postgres", user="postgres", password="Kaliakakya", host="127.0.0.1", port="5432") print("Database opened successfully") cur = con.cursor() cur.execute("INSERT INTO STUDENT (ADMISSION,NAME,AGE,COURSE,DEPARTMENT) VALUES (3420, 'John', 18, 'Computer Science', 'ICT')"); con.commit() print("Record inserted successfully") con.close()
Output:
Database opened successfully Record inserted successfully
Sau khi chạy đoạn code này, chúng ta đã chèn một bản ghi vào bảng cơ sở dữ liệu. Điều này được thực hiện bằng cách chỉ định tên của bảng cũng như các cột mà chúng ta cần chèn dữ liệu vào. Chúng ta cũng có thể chèn nhiều bản ghi với một lệnh. Chẳng hạn:
import psycopg2 con = psycopg2.connect(database="postgres", user="postgres", password="Kaliakakya", host="127.0.0.1", port="5432") print("Database opened successfully") cur = con.cursor() cur.execute("INSERT INTO STUDENT (ADMISSION,NAME,AGE,COURSE,DEPARTMENT) VALUES (3419, 'Abel', 17, 'Computer Science', 'ICT')"); cur.execute("INSERT INTO STUDENT (ADMISSION,NAME,AGE,COURSE,DEPARTMENT) VALUES (3421, 'Joel', 17, 'Computer Science', 'ICT')"); cur.execute("INSERT INTO STUDENT (ADMISSION,NAME,AGE,COURSE,DEPARTMENT) VALUES (3422, 'Antony', 19, 'Electrical Engineering', 'Engineering')"); cur.execute("INSERT INTO STUDENT (ADMISSION,NAME,AGE,COURSE,DEPARTMENT) VALUES (3423, 'Alice', 18, 'Information Technology', 'ICT')"); con.commit() print("Records inserted successfully") con.close()
Output
Database opened successfully Records inserted successfully
Vì phương pháp này không được gọi cho đến sau khi chúng ta “commit” tất cả các câu lệnh, nhiều bản ghi được chèn vào với một lần gọi duy nhất của phương thức.
Truy xuất Dữ liệu
Bạn có thể chọn dữ liệu từ cơ sở dữ liệu Postgres và xem bản ghi bảng. Đầu tiên, bạn phải thiết lập kết nối với cơ sở dữ liệu bằng function. Tiếp theo, một con trỏ mới nên được tạo bằng cách gọi phương thức. Đối tượng con trỏ được tạo sau đó có thể được sử dụng để thực hiện câu lệnh truy vấn dữ liệu từ cơ sở dữ liệu.
Chẳng hạn:
import psycopg2 con = psycopg2.connect(database="postgres", user="postgres", password="Kaliakakya", host="127.0.0.1", port="5432") print("Database opened successfully") cur = con.cursor() cur.execute("SELECT admission, name, age, course, department from STUDENT") rows = cur.fetchall() for row in rows: print("ADMISSION =", row[0]) print("NAME =", row[1]) print("AGE =", row[2]) print("COURSE =", row[3]) print("DEPARTMENT =", row[4], "\n") print("Operation done successfully") con.close()
Output
Database opened successfully ADMISSION = 3420 NAME = John AGE = 18 COURSE = Computer Science DEPARTMENT = ICT ADMISSION = 3419 NAME = Abel AGE = 17 COURSE = Computer Science DEPARTMENT = ICT ADMISSION = 3421 NAME = Joel AGE = 17 COURSE = Computer Science DEPARTMENT = ICT ADMISSION = 3422 NAME = Antony AGE = 19 COURSE = Electrical Engineering DEPARTMENT = Engineering ADMISSION = 3423 NAME = Alice AGE = 18 COURSE = Information Technology DEPARTMENT = ICT Operation done successfully
Ở đây chúng ta đã lấy dữ liệu từ cơ sở dữ liệu bằng cách chỉ định bảng và tên của các cột mà chúng ta cần truy xuất từ bảng cơ sở dữ liệu. Dữ liệu này được trả về cho chúng ta dưới dạng danh sách các tuples, với danh sách “cấp cao nhất” là các hàng dữ liệu. Sau đó, mỗi hàng là một tuple của dữ liệu cột. Nếu không có hàng nào được trả về cho truy vấn thì một danh sách trống sẽ được trả về .
Update Bảng
Chúng ta có thể cập nhật hoặc sửa đổi các chi tiết của bản ghi đã được chèn vào bảng cơ sở dữ liệu. Đầu tiên, chúng ta phải thiết lập một kết nối với cơ sở dữ liệu bằng cách sử dụng phương thức. Tiếp theo, chúng ta gọi function để tạo đối tượng con trỏ. Cuối cùng, chúng ta chạy phương thức để thực hiện câu trả lời với các giá trị đầu vào.
Chẳng hạn:
import psycopg2 con = psycopg2.connect(database="postgres", user="postgres", password="Kaliakakya", host="127.0.0.1", port="5432") print("Database opened successfully") cur = con.cursor() cur.execute("UPDATE STUDENT set AGE = 20 where ADMISSION = 3420") con.commit() print("Total updated rows:", cur.rowcount) cur.execute("SELECT admission, age, name, course, department from STUDENT") rows = cur.fetchall() for row in rows: print("ADMISSION =", row[0]) print("NAME =", row[1]) print("AGE =", row[2]) print("COURSE =", row[2]) print("DEPARTMENT =", row[3], "\n") print("Operation done successfully") con.close()
Output
Database opened successfully Total updated rows: 1 ADMISSION = 3419 NAME = 17 AGE = Abel COURSE = Abel DEPARTMENT = Computer Science ADMISSION = 3421 NAME = 17 AGE = Joel COURSE = Joel DEPARTMENT = Computer Science ADMISSION = 3422 NAME = 19 AGE = Antony COURSE = Antony DEPARTMENT = Electrical Engineering ADMISSION = 3423 NAME = 18 AGE = Alice COURSE = Alice DEPARTMENT = Information Technology ADMISSION = 3420 NAME = 20 AGE = John COURSE = John DEPARTMENT = Computer Science Operation done successfully
Trong ví dụ bên trên, chúng ta đã cập nhật giá trị của cột cho tất cả các hàng có là 3420. Sau khi thực hiện bản cập nhật, chúng ta truy xuất dữ liệu này để xác minh rằng các hàng / cột thích hợp đã được cập nhật.
Xóa Hàng
Để xóa bản ghi khỏi bảng cơ sở dữ liệu Postgres, trước tiên chúng ta nên thiết lập kết nối với máy chủ cơ sở dữ liệu. Thứ hai, một đối tượng con trỏ nên được tạo bằng cách gọi hàm. Sau đó, chúng ta chạy statement để thực hiện xóa.
Chẳng hạn:
import psycopg2 con = psycopg2.connect(database="postgres", user="postgres", password="Kaliakakya", host="127.0.0.1", port="5432") print("Database opened successfully") cur = con.cursor() cur.execute("DELETE from STUDENT where ADMISSION=3420;") con.commit() print("Total deleted rows:", cur.rowcount) cur.execute("SELECT admission, name, age, course, department from STUDENT") rows = cur.fetchall() for row in rows: print("ADMISSION =", row[0]) print("NAME =", row[1]) print("AGE =", row[2]) print("COURSE =", row[3]) print("DEPARTMENT =", row[4], "\n") print("Deletion successful") con.close()
Output
Database opened successfully Total deleted rows: 1 ADMISSION = 3419 NAME = Abel AGE = 17 COURSE = Computer Science DEPARTMENT = ICT ADMISSION = 3421 NAME = Joel AGE = 17 COURSE = Computer Science DEPARTMENT = ICT ADMISSION = 3422 NAME = Antony AGE = 19 COURSE = Electrical Engineering DEPARTMENT = Engineering ADMISSION = 3423 NAME = Alice AGE = 18 COURSE = Information Technology DEPARTMENT = ICT Deletion successful
Trong ví dụ này, chúng ta đã xóa tất cả các hồ sơ trong đó số nhập học của học sinh là 3420, trong trường hợp này chỉ là một hàng. Sau khi truy xuất dữ liệu bằng cách sử dụng, chúng ta có thể thấy rằng bản ghi này không phải là một phần của đầu ra trên, xác nhận rằng nó đã bị xóa khỏi cơ sở dữ liệu.
Kết thúc
Với Python, có nhiều cách khác nhau để chúng ta có thể truy cập cơ sở dữ liệu PostgreSQL. Có rất nhiều trình điều khiển cơ sở dữ liệu cho Python mà chúng ta có thể sử dụng cho mục đích này, nhưng psycopg là phổ biến nhất. Trong bài viết này, chúng tôi đã chỉ ra cách cài đặt mô-đun, thiết lập kết nối với cơ sở dữ liệu PostgreSQL của bạn và thực hiện các truy vấn SQL phổ biến bằng mã Python.