Tóm tắt: Trong hướng dẫn này, bạn sẽ tìm hiểu cách gọi các thủ tục được lưu trữ của PostgreSQL từ chương trình Python.: in this tutorial, you will learn how to call PostgreSQL stored procedures from a Python program.
Các bước để gọi một thủ tục được lưu trữ sau PostgreSQL trong Python
Để gọi một thủ tục được lưu trữ sau PostgreSQL trong chương trình Python, bạn làm theo các bước đó:
Đầ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 ____1010:
Code language: Python [python]
conn = psycopg2.connect[dsn]
Phương thức
0 trả về một thể hiện mới của lớpCode language: Python [python]
cur = conn.cursor[]
2.Code language: Python [python]
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: Python [python]
cur = conn.cursor[]
Code language: Python [python]
cur = conn.cursor[]
Sau đó, chuyển tên của quy trình được lưu trữ và các giá trị đầu vào tùy chọn cho phương thức
4 của đối tượng
cur = conn.cursor[]
Code language: Python [python]
5. Ví dụ:Code language: Python [python]
cur = conn.cursor[]
Code language: Python [python]
cur.execute["CALL sp_name[%s, %s];", [val1, val2]]
Nếu bạn đã lưu trữ thủ tục không chấp nhận bất kỳ tham số nào, bạn có thể bỏ qua đối số thứ hai như sau:
Code language: Python [python]
cur.execute["CALL sp_name];"]
Sau đó, hãy gọi phương thức
6 để thực hiện giao dịch:Code language: Python [python]
cur = conn.cursor[]
Code language: Python [python]
conn.commit[];
Cuối cùng, hãy gọi phương thức
7 của các đối tượngCode language: Python [python]
cur = conn.cursor[]
5 vàCode language: Python [python]
cur = conn.cursor[]
2 để đóng kết nối với máy chủ cơ sở dữ liệu PostgreSQL.
cur = conn.cursor[]
Code language: Python [python]
Code language: Python [python]
cur.close[] conn.close[]
Gọi một ví dụ về thủ tục được lưu trữ
Đầu tiên, hãy tạo quy trình được lưu trữ
0 sau trong cơ sở dữ liệuCode language: Python [python]
cur.execute["CALL sp_name[%s, %s];", [val1, val2]]
1.Code language: Python [python]
cur.execute["CALL sp_name[%s, %s];", [val1, val2]]
Code language: SQL [Structured Query Language] [sql]
CREATE OR REPLACE PROCEDURE add_new_part[ new_part_name varchar, new_vendor_name varchar ] AS $$ DECLARE v_part_id INT; v_vendor_id INT; BEGIN -- insert into the parts table INSERT INTO parts[part_name] VALUES[new_part_name] RETURNING part_id INTO v_part_id; -- insert a new vendor INSERT INTO vendors[vendor_name] VALUES[new_vendor_name] RETURNING vendor_id INTO v_vendor_id; -- insert into vendor_parts INSERT INTO vendor_parts[part_id, vendor_id] VALUEs[v_part_id,v_vendor_id]; END; $$ LANGUAGE PLPGSQL;
Thứ hai, tạo một tệp mới có tên
2 và xác định hàmCode language: Python [python]
cur.execute["CALL sp_name[%s, %s];", [val1, val2]]
3 sau. HàmCode language: Python [python]
cur.execute["CALL sp_name[%s, %s];", [val1, val2]]
3 gọi quy trình được lưu trữCode language: Python [python]
cur.execute["CALL sp_name[%s, %s];", [val1, val2]]
0 từ cơ sở dữ liệuCode language: Python [python]
cur.execute["CALL sp_name[%s, %s];", [val1, val2]]
1:
cur.execute["CALL sp_name[%s, %s];", [val1, val2]]
Code language: Python [python]
Code language: Python [python]
#!/usr/bin/python import psycopg2 from config import config def add_part[part_name, vendor_name]: 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[] # call a stored procedure cur.execute['CALL add_new_part[%s,%s]', [part_name, vendor_name]] # commit the transaction conn.commit[] # close the cursor cur.close[] except [Exception, psycopg2.DatabaseError] as error: print[error] finally: if conn is not None: conn.close[] if __name__ == '__main__': add_part['OLED', 'LG']
Thực hiện tệp Python
Để thực hiện tệp Python, bạn sử dụng câu lệnh sau:
Code language: CSS [css]
python stored_proc.py
Để xác minh chèn, bạn có thể truy vấn dữ liệu từ bảng
7,Code language: Python [python]
cur.execute["CALL sp_name[%s, %s];", [val1, val2]]
8 vàCode language: Python [python]
cur.execute["CALL sp_name[%s, %s];", [val1, val2]]
9:Code language: Python [python]
cur.execute["CALL sp_name[%s, %s];", [val1, val2]]
SELECT * FROM parts; SELECT * FROM vendors; SELECT * FROM vendor_parts;
Trong hướng dẫn này, bạn đã học từng bước làm thế nào để gọi một thủ tục được lưu trữ của PostgreSQL trong Python.
Hướng dẫn này có hữu ích không?