PostgreSQL - Python Interface: A Beginner's Guide

Xin chào các nhà pháp sư cơ sở dữ liệu tương lai! Tôi rất vui mừng được hướng dẫn bạn trên hành trình thú vị vào thế giới của PostgreSQL và Python. Là một ai đó đã dạy khoa học máy tính trong nhiều năm, tôi có thể告诉 bạn rằng sự kết hợp này giống như bơ và jelly - đơn giản là ngon tuyệt! Hãy撸 上映 tay và nhảy vào!

PostgreSQL - Python

Cài đặt

Trước khi chúng ta có thể bắt đầu tạo ra phép màu, chúng ta cần thiết lập công cụ của mình. Hãy nghĩ về điều này như việc chuẩn bị bếp trước khi nấu một bữa ăn cao cấp.

  1. Đầu tiên, hãy chắc chắn rằng bạn đã cài đặt PostgreSQL trên máy tính của bạn. Bạn có thể tải xuống từ trang web chính thức của PostgreSQL.

  2. Tiếp theo, chúng ta cần cài đặt mô-đun Python cho phép chúng ta giao tiếp với PostgreSQL. Mở terminal hoặc command prompt và gõ:

pip install psycopg2

Lệnh này giống như yêu cầu máy tính của bạn thêm một công cụ mới vào hộp công cụ của nó. Khi việc này hoàn tất, bạn đã sẵn sàng!

Python psycopg2 module APIs

Bây giờ chúng ta đã có công cụ, hãy nhanh chóng xem qua những gì chúng có thể làm. Mô-đun psycopg2 cung cấp cho chúng ta một bộ các hàm để tương tác với PostgreSQL. Dưới đây là bảng các hàm phổ biến nhất:

Hàm Mô tả
connect() Thiết lập kết nối với cơ sở dữ liệu
cursor() Tạo một đối tượng con trỏ để thực thi lệnh SQL
execute() Thực thi một hoạt động cơ sở dữ liệu (truy vấn hoặc lệnh)
fetchone() Lấy dòng tiếp theo của tập kết quả truy vấn
fetchall() Lấy tất cả (các dòng còn lại) của tập kết quả truy vấn
commit() Chấp nhận giao dịch hiện tại
rollback() Quay lại đầu của bất kỳ giao dịch nào đang chờ
close() Đóng kết nối cơ sở dữ liệu

Đừng lo lắng nếu điều này trông giống như một ngôn ngữ nước ngoài đối với bạn hiện tại. Chúng ta sẽ khám phá từng hàm chi tiết khi chúng ta tiếp tục!

Kết nối với cơ sở dữ liệu

Hãy bắt đầu bằng cách tạo kết nối với cơ sở dữ liệu của chúng ta. Điều này giống như gõ cửa và yêu cầu được vào.

import psycopg2

try:
connection = psycopg2.connect(
database="mydb",
user="myuser",
password="mypassword",
host="localhost",
port="5432"
)
print("Kết nối thành công!")
except (Exception, psycopg2.Error) as error:
print("Lỗi khi kết nối với PostgreSQL", error)

Trong đoạn mã này, chúng ta:

  1. Nhập mô-đun psycopg2
  2. Sử dụng hàm connect() để thiết lập kết nối
  3. Cung cấp các chi tiết cần thiết như tên cơ sở dữ liệu, người dùng, mật khẩu, v.v.
  4. Sử dụng khối try-except để xử lý bất kỳ lỗi tiềm ẩn nào

Nếu mọi thứ diễn ra tốt, bạn nên thấy "Kết nối thành công!" được in ra. Chúc mừng, bạn vừa mở cửa vào cơ sở dữ liệu của bạn!

Tạo bảng

Bây giờ chúng ta đã vào trong, hãy tạo một bảng để lưu trữ một số dữ liệu. Hãy tưởng tượng bạn đang thiết lập một kệ sách để tổ chức sách của bạn.

try:
cursor = connection.cursor()
create_table_query = '''CREATE TABLE books
(ID INT PRIMARY KEY     NOT NULL,
TITLE           TEXT    NOT NULL,
AUTHOR          TEXT    NOT NULL,
PUBLISHED_DATE  DATE);'''
cursor.execute(create_table_query)
connection.commit()
print("Bảng được tạo thành công!")
except (Exception, psycopg2.Error) as error:
print("Lỗi khi tạo bảng", error)
finally:
if connection:
cursor.close()
connection.close()
print("Kết nối PostgreSQL được đóng")

Đây là những gì đang diễn ra:

  1. Chúng ta tạo một đối tượng con trỏ, giống như trợ lý cơ sở dữ liệu của chúng ta
  2. Chúng ta xác định truy vấn SQL để tạo bảng 'books'
  3. Chúng ta sử dụng execute() để chạy truy vấn
  4. Chúng ta commit() thay đổi để làm cho chúng vĩnh viễn
  5. Cuối cùng, chúng ta đóng con trỏ và kết nối để trở thành công dân tốt của cơ sở dữ liệu

Hoạt động INSERT

Đã đến lúc thêm một số sách vào kệ của chúng ta! Hãy chèn một bản ghi vào bảng của chúng ta.

try:
cursor = connection.cursor()
insert_query = """ INSERT INTO books (ID, TITLE, AUTHOR, PUBLISHED_DATE)
VALUES (%s, %s, %s, %s)"""
record_to_insert = (1, "To Kill a Mockingbird", "Harper Lee", "1960-07-11")
cursor.execute(insert_query, record_to_insert)
connection.commit()
print("Bản ghi được chèn thành công")
except (Exception, psycopg2.Error) as error:
print("Lỗi khi chèn dữ liệu", error)

Trong đoạn mã này:

  1. Chúng ta tạo truy vấn INSERT với các placeholder (%s) cho các giá trị của chúng ta
  2. Chúng ta xác định một tuple với các giá trị chúng ta muốn chèn
  3. Chúng ta thực thi truy vấn, truyền vào tuple của các giá trị
  4. Chúng ta commit() thay đổi

Hoạt động SELECT

Bây giờ, hãy kiểm tra kệ sách của chúng ta và xem chúng ta có gì!

try:
cursor = connection.cursor()
select_query = "SELECT * from books"
cursor.execute(select_query)
records = cursor.fetchall()
for row in records:
print("ID:", row[0])
print("TITLE:", row[1])
print("AUTHOR:", row[2])
print("PUBLISHED DATE:", row[3], "\n")
except (Exception, psycopg2.Error) as error:
print("Lỗi khi lấy dữ liệu", error)

Đây là những gì đang diễn ra:

  1. Chúng ta tạo một truy vấn SELECT để lấy tất cả các bản ghi từ bảng 'books'
  2. Chúng ta thực thi truy vấn
  3. Chúng ta sử dụng fetchall() để lấy tất cả các kết quả
  4. Chúng ta lặp qua kết quả và in chi tiết của mỗi sách

Hoạt động UPDATE

Oops! Chúng ta đã phạm một sai lầm. Hãy cập nhật một bản ghi để sửa lỗi.

try:
cursor = connection.cursor()
update_query = """Update books set AUTHOR = %s where ID = %s"""
cursor.execute(update_query, ("Nelle Harper Lee", 1))
connection.commit()
print("Bản ghi được cập nhật thành công")
except (Exception, psycopg2.Error) as error:
print("Lỗi khi cập nhật dữ liệu", error)

Trong đoạn mã này:

  1. Chúng ta tạo truy vấn UPDATE với các placeholder cho tên tác giả mới và ID
  2. Chúng ta thực thi truy vấn với các giá trị mới
  3. Chúng ta commit() thay đổi

Hoạt động DELETE

Cuối cùng, hãy học cách loại bỏ một sách khỏi kệ của chúng ta.

try:
cursor = connection.cursor()
delete_query = """Delete from books where ID = %s"""
cursor.execute(delete_query, (1,))
connection.commit()
print("Bản ghi được xóa thành công")
except (Exception, psycopg2.Error) as error:
print("Lỗi khi xóa dữ liệu", error)
finally:
if connection:
cursor.close()
connection.close()
print("Kết nối PostgreSQL được đóng")

Đây là những gì đang diễn ra:

  1. Chúng ta tạo truy vấn DELETE với một placeholder cho ID
  2. Chúng ta thực thi truy vấn với ID của bản ghi chúng ta muốn xóa
  3. Chúng ta commit() thay đổi
  4. Cuối cùng, chúng ta đóng con trỏ và kết nối

Và thế là xong! Bạn đã học được cơ bản về cách làm việc với PostgreSQL bằng Python. Nhớ rằng, thực hành là cách tốt nhất để trở nên thành thạo, vì vậy đừng ngại thử nghiệm và thử các điều khác nhau. Chúc may mắn và hy vọng cơ sở dữ liệu của bạn luôn ở trong tình trạng hoàn hảo!

Credits: Image by storyset