python psycopg2

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.

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments