Tóm tắt: Trong hướng dẫn này, bạn sẽ tìm hiểu cách gọi các chức năng của PostgreSQL từ chương trình Python.: in this tutorial, you will learn how to call PostgreSQL functions from a Python program.
Gọi chức năng PostgreSQL trong các bước Python
Để gọi chức năng PostgreSQL từ chương trình Python, bạn sử dụng các bước sau:
Đầu tiên, hãy tạo kết nối cơ sở dữ liệu mới đến máy chủ cơ sở dữ liệu PostgreSQL bằng cách gọi hàm connect[]
của mô -đun ____10.
Code language: Python [python]
conn = psycopg2.connect[dsn]
Phương thức connect[]
trả về một thể hiện mới của lớp
2.Code language: SQL [Structured Query Language] [sql]
cur = conn.cursor[]
Tiếp theo, tạo một con trỏ mới bằng cách gọi phương thức
3 của đối tượng kết nối.Code language: SQL [Structured Query Language] [sql]
cur = conn.cursor[]
Code language: SQL [Structured Query Language] [sql]
cur = conn.cursor[]
Sau đó, chuyển tên của hàm và các giá trị đầu vào tùy chọn cho phương thức
4 của đối tượng con trỏ.
cur = conn.cursor[]
Code language: SQL [Structured Query Language] [sql]
Code language: SQL [Structured Query Language] [sql]
cur.callproc['function_name', [value1,value2]]
Trong nội bộ, phương thức & nbsp; ________ 14 dịch các giá trị gọi và đầu vào chức năng thành câu lệnh sau:
Code language: Python [python]
SELECT * FROM function_name[value1,value2];
Do đó, bạn có thể sử dụng phương thức
6 của đối tượng con trỏ để gọi hàm như sau:Code language: SQL [Structured Query Language] [sql]
cur = conn.cursor[]
Code language: Python [python]
cur.execute["SELECT * FROM function_name[ %s,%s]; ",[value1,value2]]
Cả hai tuyên bố đều có cùng một hiệu ứng.
Sau đó, xử lý bộ kết quả được trả về bởi hàm bằng phương pháp
7, & nbsp; ____ 18, hoặc & nbsp; ________ 19.Code language: SQL [Structured Query Language] [sql]
cur = conn.cursor[]
Cuối cùng, hãy gọi phương thức
0 của các đối tượngCode language: SQL [Structured Query Language] [sql]
cur.callproc['function_name', [value1,value2]]
1 vàCode language: SQL [Structured Query Language] [sql]
cur.callproc['function_name', [value1,value2]]
2 để đóng giao tiếp với máy chủ cơ sở dữ liệu PostgreSQL.Code language: SQL [Structured Query Language] [sql]
cur = conn.cursor[]
Code language: Python [python]
cur.close[] conn.close[]
Gọi một ví dụ về chức năng
Hàm
3 sau đây trả về một danh sách các phần được cung cấp bởi một nhà cung cấp được chỉ định.Code language: SQL [Structured Query Language] [sql]
cur.callproc['function_name', [value1,value2]]
Code language: SQL [Structured Query Language] [sql]
CREATE OR REPLACE FUNCTION get_parts_by_vendor[id integer] RETURNS TABLE[part_id INTEGER, part_name VARCHAR] AS $$ BEGIN RETURN QUERY SELECT parts.part_id, parts.part_name FROM parts INNER JOIN vendor_parts on vendor_parts.part_id = parts.part_id WHERE vendor_id = id; END; $$ LANGUAGE plpgsql;
Hàm
4 sau đây gọi hàmCode language: SQL [Structured Query Language] [sql]
cur.callproc['function_name', [value1,value2]]
3:
cur.callproc['function_name', [value1,value2]]
Code language: SQL [Structured Query Language] [sql]
Code language: Python [python]
#!/usr/bin/python import psycopg2 from config import config def get_parts[vendor_id]: """ get parts provided by a vendor specified by the vendor_id """ conn = None try: # read database configuration params = config[] # connect to the PostgreSQL database conn = psycopg2.connect[**params] # create a cursor object for execution cur = conn.cursor[] # another way to call a function # cur.execute["SELECT * FROM get_parts_by_vendor[ %s]; ",[vendor_id,]] cur.callproc['get_parts_by_vendor', [vendor_id,]] # process the result set row = cur.fetchone[] while row is not None: print[row] row = cur.fetchone[] # close the communication with the PostgreSQL database server cur.close[] except [Exception, psycopg2.DatabaseError] as error: print[error] finally: if conn is not None: conn.close[]
Các cuộc gọi sau đây gọi chức năng
4 để lấy danh sách các bộ phận do nhà cung cấp với ID 1:Code language: SQL [Structured Query Language] [sql]
cur.callproc['function_name', [value1,value2]]
Code language: Python [python]
if __name__ == '__main__': get_parts[1]
Trong hướng dẫn này, bạn đã học từng bước cách gọi chức năng PostgreSQL trong Python.
Hướng dẫn này có hữu ích không?