Hướng dẫn Python PostgreSQL với mô-đun psycopg2 chỉ ra cách lập trình cơ sở dữ liệu PostgreSQL bằng Python với mô-đun psycopg2
PostgreSQL là một hệ thống cơ sở dữ liệu quan hệ đối tượng mã nguồn mở mạnh mẽ. Nó là một hệ thống quản lý cơ sở dữ liệu đa người dùng. Nó chạy trên nhiều nền tảng bao gồm Linux, FreeBSD, Solaris, Microsoft Windows và Mac OS X. PostgreSQL được phát triển bởi PostgreSQL Global Development Group
Mô-đun psycopg2
Có một số thư viện Python cho PostgreSQL. ngôn ngữ. Trong hướng dẫn này, chúng tôi sử dụng mô-đun
print[version]5. Nó là một bộ điều hợp cơ sở dữ liệu PostgreSQL cho ngôn ngữ lập trình Python. Nó chủ yếu được triển khai trong C dưới dạng trình bao bọc
print[version]6
$ pip install psycopg2
Chúng tôi cài đặt mô-đun
print[version]5
Trong ví dụ mã đầu tiên, chúng tôi nhận được phiên bản của cơ sở dữ liệu PostgreSQL
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]
Trong chương trình, chúng tôi kết nối với cơ sở dữ liệu
print[version]8 đã tạo trước đó. Chúng tôi thực thi một câu lệnh SQL trả về phiên bản của cơ sở dữ liệu PostgreSQL
import psycopg2
print[version]5 là một mô-đun Python được sử dụng để hoạt động với cơ sở dữ liệu PostgreSQL________số 8_______
Chúng tôi khởi tạo biến con thành
except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1]0. Trong trường hợp chúng tôi không thể tạo kết nối đến cơ sở dữ liệu [ví dụ: đĩa đầy], chúng tôi sẽ không xác định biến kết nối. Điều này sẽ dẫn đến một lỗi trong mệnh đề cuối cùng
con = psycopg2.connect[database='testdb', user='postgres', password='s$cret']
Phương thức
except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1]1 tạo một phiên cơ sở dữ liệu mới và trả về một đối tượng kết nối. Người dùng được tạo mà không cần mật khẩu. Trên localhost, chúng ta có thể bỏ tùy chọn mật khẩu. Nếu không, nó phải được chỉ định
cur = con.cursor[] cur.execute['SELECT version[]']
Từ kết nối, chúng tôi nhận được đối tượng con trỏ. Con trỏ được sử dụng để duyệt qua các bản ghi từ tập kết quả. Chúng ta gọi phương thức
except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1]2 của con trỏ và thực thi câu lệnh SQL
version = cur.fetchone[][0]
Chúng tôi lấy dữ liệu. Vì chúng tôi chỉ truy xuất một bản ghi, nên chúng tôi gọi phương thức
except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1]3
print[version]
Chúng tôi in dữ liệu mà chúng tôi đã lấy ra bàn điều khiển
except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1]
Trong trường hợp ngoại lệ, chúng tôi in thông báo lỗi và thoát khỏi chương trình với mã lỗi 1
finally: if con: con.close[]]
Trong bước cuối cùng, chúng tôi giải phóng tài nguyên
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]0
Trong ví dụ thứ hai, chúng ta lại lấy phiên bản của cơ sở dữ liệu PostgreSQL. Lần này chúng tôi sử dụng từ khóa
except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1]4
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]1
Chương trình trả về phiên bản hiện tại của cơ sở dữ liệu PostgreSQL. Với việc sử dụng từ khóa with. Mã nhỏ gọn hơn
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]2
Với từ khóa
except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1]4, Python tự động giải phóng tài nguyên. Nó cũng cung cấp xử lý lỗi
Python psycopg2 thực thi
Chúng tôi tạo bảng
except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1]6 và chèn một số hàng vào đó.
except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1]2 thực hiện thao tác cơ sở dữ liệu [truy vấn hoặc lệnh]
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]3
Chương trình tạo bảng
except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1]6 và chèn tám hàng vào bảng
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]4
Câu lệnh SQL này tạo một bảng
except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1]6 mới. Bảng có ba cột
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]5
Hai dòng này chèn hai chiếc xe vào bảng
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]6
Chúng tôi xác minh dữ liệu bằng văn bản bằng công cụ
finally: if con: con.close[]]0
Phương thức
finally: if con: con.close[]]1 là một phương thức thuận tiện để khởi chạy một thao tác cơ sở dữ liệu [truy vấn hoặc lệnh] đối với tất cả các bộ tham số hoặc ánh xạ được tìm thấy trong chuỗi được cung cấp. Chức năng này chủ yếu hữu ích cho các lệnh cập nhật cơ sở dữ liệu. bất kỳ tập kết quả nào được trả về bởi truy vấn đều bị loại bỏ
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]7
Ví dụ này loại bỏ bảng
except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1]6 nếu nó tồn tại và [tái] tạo nó
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]8
Câu lệnh SQL đầu tiên loại bỏ bảng
except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1]6 nếu nó tồn tại. Câu lệnh SQL thứ hai tạo bảng
except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1]6
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]9
Đây là truy vấn mà chúng tôi sử dụng
import psycopg20
Chúng tôi chèn tám hàng vào bảng bằng phương pháp
finally: if con: con.close[]]1 tiện lợi. Tham số đầu tiên của phương thức này là một câu lệnh SQL được tham số hóa. Tham số thứ hai là dữ liệu, ở dạng một bộ của các bộ
Python psycopg2 id hàng được chèn lần cuối
print[version]5 không hỗ trợ thuộc tính
finally: if con: con.close[]]7. Để trả về id của hàng được chèn cuối cùng, chúng ta phải sử dụng mệnh đề
finally: if con: con.close[]]8 của PostgreSQL
import psycopg21
Chương trình tạo một bảng
finally: if con: con.close[]]9 mới và in Id của hàng được chèn vào cuối cùng
import psycopg22
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]00 tìm nạp tất cả các hàng [còn lại] của kết quả truy vấn, trả về chúng dưới dạng danh sách các bộ dữ liệu. Một danh sách trống được trả về nếu không còn bản ghi nào để tìm nạp
import psycopg23
Trong ví dụ này, chúng tôi lấy tất cả dữ liệu từ bảng
except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1]6
import psycopg24
Câu lệnh SQL này chọn tất cả dữ liệu từ bảng
except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1]6
import psycopg25
Phương thức
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]00 lấy tất cả các bản ghi. Nó trả về một tập kết quả. Về mặt kỹ thuật, nó là một bộ của các bộ. Mỗi bộ dữ liệu bên trong đại diện cho một hàng trong bảng
import psycopg26
Chúng tôi in dữ liệu ra bàn điều khiển, từng hàng
import psycopg27
Python tìm nạp psycopg2
except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1]3 trả về hàng tiếp theo của tập kết quả truy vấn, trả về một bộ hoặc
except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1]0 khi không có thêm dữ liệu
import psycopg28
Trong ví dụ này, chúng tôi kết nối với cơ sở dữ liệu và tìm nạp từng hàng của bảng
except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1]6
import psycopg29
Chúng tôi truy cập dữ liệu từ vòng lặp while. Khi chúng tôi đọc hàng cuối cùng, vòng lặp kết thúc
con = None0
Phương thức
except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1]3 trả về hàng tiếp theo từ bảng. Nếu không còn dữ liệu nào nữa, nó sẽ trả về
except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1]0. Trong trường hợp này, chúng tôi phá vỡ vòng lặp
con = None1
Dữ liệu được trả về dưới dạng một tuple. Ở đây chúng tôi chọn các bản ghi từ Tuple. Đầu tiên là Id, thứ hai là tên xe và thứ ba là giá xe
Con trỏ mặc định truy xuất dữ liệu trong một bộ gồm nhiều bộ. Với con trỏ từ điển, dữ liệu được gửi dưới dạng từ điển Python. Sau đó, chúng ta có thể tham khảo dữ liệu theo tên cột của chúng
con = None2
Trong ví dụ này, chúng tôi in nội dung của bảng
except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1]6 bằng cách sử dụng con trỏ từ điển
con = None3
Con trỏ từ điển được đặt trong mô-đun bổ sung
con = None4
Chúng tôi tạo một
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]10
con = None5
Dữ liệu được truy cập theo tên cột. Tên cột được gấp thành chữ thường trong PostgreSQL [trừ khi được trích dẫn] và phân biệt chữ hoa chữ thường. Do đó, chúng tôi phải cung cấp tên cột bằng chữ thường
Khi chúng tôi sử dụng các truy vấn được tham số hóa, chúng tôi sử dụng các trình giữ chỗ thay vì viết trực tiếp các giá trị vào các câu lệnh. Các truy vấn được tham số hóa tăng tính bảo mật và hiệu suất
Mô-đun Python
print[version]5 hỗ trợ hai loại trình giữ chỗ. Định dạng printf ANSI C và định dạng mở rộng Python
con = None6
Chúng tôi cập nhật giá của một chiếc xe. Trong ví dụ mã này, chúng tôi sử dụng trình giữ chỗ dấu chấm hỏi
con = None7
Các ký tự [%s] là phần giữ chỗ cho các giá trị. Các giá trị được thêm vào trình giữ chỗ
con = None8
Thuộc tính
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]12 trả về số hàng được cập nhật. Trong trường hợp của chúng tôi, một hàng đã được cập nhật
con = None9
Giá xe đã được cập nhật. Chúng tôi kiểm tra sự thay đổi bằng công cụ
finally: if con: con.close[]]0
Ví dụ thứ hai sử dụng các câu lệnh được tham số hóa với định dạng mở rộng Python
con = psycopg2.connect[database='testdb', user='postgres', password='s$cret']0
Chúng tôi chọn tên và giá của một chiếc ô tô bằng cách sử dụng câu lệnh tham số hóa
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]14
con = psycopg2.connect[database='testdb', user='postgres', password='s$cret']1
Các trình giữ chỗ được đặt tên bắt đầu bằng ký tự dấu hai chấm
con = psycopg2.connect[database='testdb', user='postgres', password='s$cret']2
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]15 là phần mở rộng psycopg2 cho API DB Python trả về chuỗi truy vấn sau khi liên kết đối số. Chuỗi được trả về chính xác là chuỗi sẽ được gửi đến cơ sở dữ liệu chạy phương thức
except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1]2 hoặc tương tự
con = psycopg2.connect[database='testdb', user='postgres', password='s$cret']3
Chương trình hiển thị một chuỗi truy vấn CHỌN sau khi liên kết các đối số với
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]15
con = psycopg2.connect[database='testdb', user='postgres', password='s$cret']4
Trong phần này, chúng ta sẽ chèn một hình ảnh vào cơ sở dữ liệu PostgreSQL
con = psycopg2.connect[database='testdb', user='postgres', password='s$cret']5
Đối với ví dụ này, chúng tôi tạo một bảng mới có tên là
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]18. Đối với hình ảnh, chúng tôi sử dụng kiểu dữ liệu
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]19. Nó cho phép lưu trữ các chuỗi nhị phân
con = psycopg2.connect[database='testdb', user='postgres', password='s$cret']6
Trong chương trình, chúng tôi đọc một hình ảnh từ thư mục làm việc hiện tại và viết nó vào bảng
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]18 của cơ sở dữ liệu PostgreSQL
print[version]8
con = psycopg2.connect[database='testdb', user='postgres', password='s$cret']7
Chúng tôi đọc dữ liệu nhị phân từ hệ thống tập tin. Chúng tôi có một hình ảnh JPEG được gọi là
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]22
con = psycopg2.connect[database='testdb', user='postgres', password='s$cret']8
Dữ liệu được mã hóa bằng cách sử dụng đối tượng
print[version]5
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]24
con = psycopg2.connect[database='testdb', user='postgres', password='s$cret']9
Câu lệnh SQL này được sử dụng để chèn hình ảnh vào cơ sở dữ liệu
Python psycopg2 đọc hình ảnh
Trong phần này, chúng ta sẽ thực hiện thao tác đảo ngược. Chúng tôi đọc một hình ảnh từ bảng cơ sở dữ liệu
cur = con.cursor[] cur.execute['SELECT version[]']0
Chúng tôi đọc dữ liệu hình ảnh từ bảng hình ảnh và ghi nó vào một tệp khác, mà chúng tôi gọi là
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]25
cur = con.cursor[] cur.execute['SELECT version[]']1
Chúng tôi mở một tệp nhị phân ở chế độ ghi. Dữ liệu từ cơ sở dữ liệu được ghi vào tệp
cur = con.cursor[] cur.execute['SELECT version[]']2
Hai dòng này chọn và lấy dữ liệu từ bảng
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]18. Chúng tôi lấy dữ liệu nhị phân từ hàng đầu tiên
Siêu dữ liệu là thông tin về dữ liệu trong cơ sở dữ liệu. Siêu dữ liệu trong cơ sở dữ liệu PostgreSQL chứa thông tin về các bảng và cột, trong đó chúng tôi lưu trữ dữ liệu. Số hàng bị ảnh hưởng bởi câu lệnh SQL là siêu dữ liệu. Số lượng hàng và cột được trả về trong tập hợp kết quả cũng thuộc về siêu dữ liệu
Siêu dữ liệu trong PostgreSQL có thể được lấy bằng cách sử dụng thuộc tính
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]27 của đối tượng con trỏ hoặc từ bảng
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]28
Tiếp theo, chúng tôi in tất cả các hàng từ bảng
except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1]6 với tên cột của chúng
cur = con.cursor[] cur.execute['SELECT version[]']3
Chúng tôi in nội dung của bảng
except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1]6 ra bàn điều khiển. Bây giờ, chúng tôi cũng bao gồm tên của các cột
cur = con.cursor[] cur.execute['SELECT version[]']4
Chúng tôi lấy tên cột từ thuộc tính
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]27 của đối tượng con trỏ
cur = con.cursor[] cur.execute['SELECT version[]']5
Dòng này in ba tên cột của bảng
except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1]6
Chúng tôi in các hàng bằng vòng lặp for. Dữ liệu được căn chỉnh theo tên cột
cur = con.cursor[] cur.execute['SELECT version[]']6
Trong ví dụ sau, chúng tôi liệt kê tất cả các bảng trong cơ sở dữ liệu
print[version]8
cur = con.cursor[] cur.execute['SELECT version[]']7
Ví dụ mã in tất cả các bảng có sẵn trong cơ sở dữ liệu hiện tại ra thiết bị đầu cuối
cur = con.cursor[] cur.execute['SELECT version[]']8
Tên bảng được lưu trữ bên trong hệ thống bảng
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]28
cur = con.cursor[] cur.execute['SELECT version[]']9
Đây là những bảng trên hệ thống của chúng tôi
Python psycopg2 xuất và nhập dữ liệu
Chúng tôi có thể xuất và nhập dữ liệu bằng cách sử dụng
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]35 và
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]36
version = cur.fetchone[][0]0
Ví dụ mã sao chép dữ liệu từ bảng
except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1]6 vào tệp
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]38
version = cur.fetchone[][0]1
Chúng tôi mở một tệp nơi chúng tôi ghi dữ liệu từ bảng
except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1]6
version = cur.fetchone[][0]2
Phương thức
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]35 sao chép dữ liệu từ bảng
except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1]6 vào tệp đã mở. Các cột được phân tách bằng ký tự
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]42
version = cur.fetchone[][0]3
Đây là nội dung của tệp
except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1]6
Bây giờ chúng ta sẽ thực hiện một thao tác ngược lại. Chúng tôi nhập bảng đã kết xuất trở lại vào bảng cơ sở dữ liệu
version = cur.fetchone[][0]4
Chúng tôi xóa dữ liệu khỏi bảng
except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1]6
version = cur.fetchone[][0]5
Trong chương trình, chúng tôi đọc nội dung của tệp
except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1]6 và sao chép nó trở lại bảng xe ô tô
version = cur.fetchone[][0]6
Chúng tôi mở tệp
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]38 để đọc và sao chép nội dung vào bảng
except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1]6. Những thay đổi được cam kết
version = cur.fetchone[][0]7
Đầu ra cho thấy rằng chúng tôi đã tạo lại thành công bảng
except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1]6 đã lưu
Giao dịch là một đơn vị nguyên tử của hoạt động cơ sở dữ liệu đối với dữ liệu trong một hoặc nhiều cơ sở dữ liệu. Tác động của tất cả các câu lệnh SQL trong một giao dịch có thể được cam kết hoàn toàn với cơ sở dữ liệu hoặc tất cả được khôi phục
Trong các giao dịch mô-đun psycopg2 được xử lý bởi lớp kết nối. Lệnh đầu tiên của con trỏ kết nối bắt đầu một giao dịch. [Chúng ta không cần phải đính kèm các lệnh SQL của mình bằng các câu lệnh
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]49 và
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]50 để tạo giao dịch. Điều này được xử lý tự động bởi
print[version]5. ] Các lệnh sau được thực thi trong ngữ cảnh của giao dịch mới này. Trong trường hợp có lỗi, giao dịch bị hủy bỏ và không có lệnh nào khác được thực hiện cho đến khi phương thức
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]52
Tài liệu về mô-đun
print[version]5 nói rằng kết nối chịu trách nhiệm chấm dứt giao dịch của nó, gọi phương thức
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]54 hoặc
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]52. Các thay đổi đã cam kết ngay lập tức được thực hiện liên tục vào cơ sở dữ liệu. Đóng kết nối bằng phương pháp
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]56 hoặc hủy đối tượng kết nối [sử dụng del hoặc để nó nằm ngoài phạm vi] sẽ dẫn đến một cuộc gọi ngầm
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]52
Mô-đun
print[version]5 cũng hỗ trợ chế độ tự động cam kết, trong đó tất cả các thay đổi đối với bảng đều có hiệu lực ngay lập tức. Để chạy ở chế độ autocommit, chúng ta đặt thuộc tính
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]59 của đối tượng kết nối thành
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]60
version = cur.fetchone[][0]8
Chúng tôi tạo bảng
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]61 và cố gắng điền dữ liệu vào bảng. Tuy nhiên, như chúng ta sẽ thấy, dữ liệu sẽ không được cam kết
version = cur.fetchone[][0]9
Phương pháp
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]54 được nhận xét. Nếu chúng ta bỏ ghi chú dòng, dữ liệu sẽ được ghi vào bảng
print[version]0
Khối
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]63 luôn được thực thi. Nếu chúng tôi chưa thực hiện các thay đổi và không có lỗi xảy ra [điều này sẽ khôi phục các thay đổi] thì giao dịch vẫn được mở. Kết nối được đóng bằng phương thức
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]56 và giao dịch bị chấm dứt bằng một cuộc gọi ngầm đến phương thức
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]52
print[version]1
Chỉ sau khi chúng ta bỏ ghi chú dòng, bảng
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]61 mới được tạo
Python psycopg2 autocommit
Trong chế độ autocommit, một câu lệnh SQL được thực thi ngay lập tức
print[version]2
Trong ví dụ này, chúng tôi kết nối với cơ sở dữ liệu ở chế độ tự động xác nhận. Chúng tôi không gọi các phương thức
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]54 cũng như
#!/usr/bin/python # -*- coding: utf-8 -*- import psycopg2 import sys con = None try: con = psycopg2.connect[database='testdb', user='postgres', password='s$cret'] cur = con.cursor[] cur.execute['SELECT version[]'] version = cur.fetchone[][0] print[version] except psycopg2.DatabaseError as e: print[f'Error {e}'] sys.exit[1] finally: if con: con.close[]52