PostgreSQL - Giao diện Python
Cài đặt
PostgreSQL có thể được tích hợp với Python bằng mô-đun psycopg2. sycopg2 là một bộ điều hợp cơ sở dữ liệu PostgreSQL cho ngôn ngữ lập trình Python. psycopg2 được viết với mục đích rất nhỏ và nhanh, ổn định như một tảng đá. Bạn không cần phải cài đặt riêng mô-đun này vì nó được vận chuyển, theo mặc định, cùng với phiên bản Python 2.5.x trở đi.
Nếu bạn chưa cài đặt nó trên máy của mình thì bạn có thể sử dụng lệnh yum để cài đặt nó như sau:
$yum install python-psycopg2
Để sử dụng mô-đun psycopg2, trước tiên bạn phải tạo một đối tượng Kết nối đại diện cho cơ sở dữ liệu và sau đó tùy ý bạn có thể tạo đối tượng con trỏ sẽ giúp bạn thực thi tất cả các câu lệnh SQL.
API mô-đun psycopg2 của Python
Sau đây là các quy trình quan trọng của mô-đun psycopg2, có thể đáp ứng đủ yêu cầu của bạn để làm việc với cơ sở dữ liệu PostgreSQL từ chương trình Python của bạn. Nếu bạn đang tìm kiếm một ứng dụng phức tạp hơn, thì bạn có thể xem tài liệu chính thức của mô-đun Python psycopg2.
S. Không. | API & Mô tả |
---|---|
1 | psycopg2.connect(database="testdb", user="postgres", password="cohondob", host="127.0.0.1", port="5432") API này mở một kết nối đến cơ sở dữ liệu PostgreSQL. Nếu cơ sở dữ liệu được mở thành công, nó sẽ trả về một đối tượng kết nối. |
2 | connection.cursor() Quy trình này tạo ra một cursor sẽ được sử dụng trong suốt quá trình lập trình cơ sở dữ liệu của bạn với Python. |
3 | cursor.execute(sql [, optional parameters]) Quy trình này thực thi một câu lệnh SQL. Câu lệnh SQL có thể được tham số hóa (tức là trình giữ chỗ thay vì các ký tự SQL). Mô-đun psycopg2 hỗ trợ trình giữ chỗ sử dụng dấu% s Ví dụ: cursor.execute ("chèn vào người các giá trị (% s,% s)", (ai, tuổi)) |
4 | cursor.executemany(sql, seq_of_parameters) Quy trình này thực thi một lệnh SQL chống lại tất cả các chuỗi tham số hoặc ánh xạ được tìm thấy trong chuỗi sql. |
5 | cursor.callproc(procname[, parameters]) Quy trình này thực hiện một thủ tục cơ sở dữ liệu được lưu trữ với tên đã cho. Chuỗi tham số phải chứa một mục nhập cho mỗi đối số mà thủ tục mong đợi. |
6 | cursor.rowcount Thuộc tính chỉ đọc này trả về tổng số hàng cơ sở dữ liệu đã được sửa đổi, chèn hoặc xóa bởi lần thực thi cuối cùng * (). |
7 | connection.commit() Phương thức này cam kết giao dịch hiện tại. Nếu bạn không gọi phương thức này, bất kỳ điều gì bạn đã làm kể từ lần gọi cuối cùng tới commit () sẽ không hiển thị từ các kết nối cơ sở dữ liệu khác. |
số 8 | connection.rollback() Phương thức này sẽ quay trở lại bất kỳ thay đổi nào đối với cơ sở dữ liệu kể từ lần gọi cuối cùng tới commit (). |
9 | connection.close() Phương thức này đóng kết nối cơ sở dữ liệu. Lưu ý rằng điều này không tự động gọi commit (). Nếu bạn chỉ đóng kết nối cơ sở dữ liệu của mình mà không gọi commit () trước, các thay đổi của bạn sẽ bị mất! |
10 | cursor.fetchone() Phương thức này tìm nạp hàng tiếp theo của tập kết quả truy vấn, trả về một chuỗi duy nhất hoặc Không có khi không có thêm dữ liệu. |
11 | cursor.fetchmany([size=cursor.arraysize]) Quy trình này tìm nạp tập hợp các hàng tiếp theo của kết quả truy vấn, trả về một danh sách. Một danh sách trống được trả về khi không còn hàng nào nữa. Phương thức cố gắng tìm nạp nhiều hàng như được chỉ ra bởi tham số kích thước. |
12 | cursor.fetchall() Quy trình này tìm nạp tất cả (còn lại) các hàng của kết quả truy vấn, trả về một danh sách. Một danh sách trống được trả về khi không có hàng nào. |
Kết nối với Cơ sở dữ liệu
Đoạn mã Python sau đây cho thấy cách kết nối với cơ sở dữ liệu hiện có. Nếu cơ sở dữ liệu không tồn tại, thì nó sẽ được tạo và cuối cùng một đối tượng cơ sở dữ liệu sẽ được trả về.
#!/usr/bin/python
import psycopg2
conn = psycopg2.connect(database="testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"
Tại đây, bạn cũng có thể cung cấp cơ sở dữ liệu testdb như tên và nếu cơ sở dữ liệu được mở thành công, thì nó sẽ đưa ra thông báo sau:
Open database successfully
Tạo bảng
Chương trình Python sau sẽ được sử dụng để tạo bảng trong cơ sở dữ liệu đã tạo trước đó:
#!/usr/bin/python
import psycopg2
conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"
cur = conn.cursor()
cur.execute('''CREATE TABLE COMPANY
(ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL);''')
print "Table created successfully"
conn.commit()
conn.close()
Khi chương trình đã cho ở trên được thực thi, nó sẽ tạo bảng COMPANY trong test.db và nó sẽ hiển thị các thông báo sau:
Opened database successfully
Table created successfully
INSERT hoạt động
Chương trình Python sau đây cho thấy cách chúng ta có thể tạo các bản ghi trong bảng COMPANY của chúng ta được tạo trong ví dụ trên:
#!/usr/bin/python
import psycopg2
conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"
cur = conn.cursor()
cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
VALUES (1, 'Paul', 32, 'California', 20000.00 )");
cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
VALUES (2, 'Allen', 25, 'Texas', 15000.00 )");
cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )");
cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 )");
conn.commit()
print "Records created successfully";
conn.close()
Khi chương trình đã cho ở trên được thực thi, nó sẽ tạo các bản ghi đã cho trong bảng COMPANY và sẽ hiển thị hai dòng sau:
Opened database successfully
Records created successfully
CHỌN hoạt động
Chương trình Python sau đây cho thấy cách chúng ta có thể tìm nạp và hiển thị các bản ghi từ bảng COMPANY của chúng ta được tạo trong ví dụ trên:
#!/usr/bin/python
import psycopg2
conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"
cur = conn.cursor()
cur.execute("SELECT id, name, address, salary from COMPANY")
rows = cur.fetchall()
for row in rows:
print "ID = ", row[0]
print "NAME = ", row[1]
print "ADDRESS = ", row[2]
print "SALARY = ", row[3], "\n"
print "Operation done successfully";
conn.close()
Khi chương trình đã cho ở trên được thực thi, nó sẽ tạo ra kết quả sau:
Opened database successfully
ID = 1
NAME = Paul
ADDRESS = California
SALARY = 20000.0
ID = 2
NAME = Allen
ADDRESS = Texas
SALARY = 15000.0
ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY = 20000.0
ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY = 65000.0
Operation done successfully
CẬP NHẬT Hoạt động
Đoạn mã Python sau cho thấy cách chúng ta có thể sử dụng câu lệnh UPDATE để cập nhật bất kỳ bản ghi nào, sau đó tìm nạp và hiển thị các bản ghi đã cập nhật từ bảng COMPANY của chúng ta -
#!/usr/bin/python
import psycopg2
conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"
cur = conn.cursor()
cur.execute("UPDATE COMPANY set SALARY = 25000.00 where ID = 1")
conn.commit()
print "Total number of rows updated :", cur.rowcount
cur.execute("SELECT id, name, address, salary from COMPANY")
rows = cur.fetchall()
for row in rows:
print "ID = ", row[0]
print "NAME = ", row[1]
print "ADDRESS = ", row[2]
print "SALARY = ", row[3], "\n"
print "Operation done successfully";
conn.close()
Khi chương trình đã cho ở trên được thực thi, nó sẽ tạo ra kết quả sau:
Opened database successfully
Total number of rows updated : 1
ID = 1
NAME = Paul
ADDRESS = California
SALARY = 25000.0
ID = 2
NAME = Allen
ADDRESS = Texas
SALARY = 15000.0
ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY = 20000.0
ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY = 65000.0
Operation done successfully
Thao tác DELETE
Đoạn mã Python sau đây cho thấy cách chúng ta có thể sử dụng câu lệnh DELETE để xóa bất kỳ bản ghi nào, sau đó tìm nạp và hiển thị các bản ghi còn lại từ bảng COMPANY của chúng ta -
#!/usr/bin/python
import psycopg2
conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"
cur = conn.cursor()
cur.execute("DELETE from COMPANY where ID=2;")
conn.commit()
print "Total number of rows deleted :", cur.rowcount
cur.execute("SELECT id, name, address, salary from COMPANY")
rows = cur.fetchall()
for row in rows:
print "ID = ", row[0]
print "NAME = ", row[1]
print "ADDRESS = ", row[2]
print "SALARY = ", row[3], "\n"
print "Operation done successfully";
conn.close()
Khi chương trình đã cho ở trên được thực thi, nó sẽ tạo ra kết quả sau:
Opened database successfully
Total number of rows deleted : 1
ID = 1
NAME = Paul
ADDRESS = California
SALARY = 20000.0
ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY = 20000.0
ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY = 65000.0
Operation done successfully