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 psycopg2Chú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 psycopg2print(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() 0Trong 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
Quảng cáo#!/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() 1Chươ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() 2Vớ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() 3Chươ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() 4Câ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() 5Hai 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() 6Chú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() 7Ví 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() 8Câ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 psycopg2 0Chú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 psycopg2 1Chươ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 psycopg2 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() 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 psycopg2 3Trong 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 psycopg2 4Câ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 psycopg2 5Phươ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 psycopg2 6Chúng tôi in dữ liệu ra bàn điều khiển, từng hàng
import psycopg2 7Python 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ộ duy nhất 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 psycopg2 8Trong 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 psycopg2 9Chú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 = None 0Phươ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 = None 1Dữ 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ỏ từ điển Python psycopg2
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 = None 2Trong 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 = None 3Con trỏ từ điển được đặt trong mô-đun bổ sung
con = None 4Chú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 = None 5Dữ 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 = None 6Chú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 = None 7Cá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 = None 8Thuộ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 = None 9Giá 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') 0Chú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') 1Các trình giữ chỗ được đặt tên bắt đầu bằng ký tự dấu hai chấm
Quảng cáocon = 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') 3Chươ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
Quảng cáocon = psycopg2.connect(database='testdb', user='postgres', password='s$cret') 4Trong 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') 6Trong 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') 7Chú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') 8Dữ 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') 9Câu lệnh SQL này được sử dụng để chèn hình ảnh vào cơ sở dữ liệu
quảng cáoPython 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()') 0Chú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
Quảng cáocur = con.cursor() cur.execute('SELECT version()') 1Chú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()') 2Hai 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
quảng cáoTiế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()') 3Chú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
Quảng cáocur = con.cursor() cur.execute('SELECT version()') 4Chú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()') 5Dò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()') 6Trong 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()') 7Ví 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()') 8Tê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] 0Ví 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
Quảng cáoversion = cur.fetchone()[0] 1Chú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] 2Phươ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
Quảng cáoversion = 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] 4Chú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
Quảng cáoversion = cur.fetchone()[0] 5Trong 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] 6Chú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
Quảng cáoversion = 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 psycopg2 Python
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
quảng cáoTà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
Quảng cáoversion = cur.fetchone()[0] 8Chú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] 9Phươ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
Quảng cáoprint(version) 0Khố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 lại 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) 1Chỉ 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) 2Trong 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