Hướng dẫn postgres functions in python - các hàm postgres trong python

Bạn có thể cài đặt tiện ích mở rộng không? Nếu vậy, bạn có thể sử dụng tiện ích mở rộng PL/Python

Nội dung chính ShowShow

  • Làm cách nào để chạy một tập tin python trong postgresql?
  • Làm cách nào để chạy kịch bản Python từ một thủ tục được lưu trữ trong Postgres?
  • Postgresql có hoạt động với Python không?
  • Làm thế nào để Python tích hợp với PostgreSQL?

CREATE FUNCTION callMyApp()
RETURNS VOID
AS $$
import subprocess
subprocess.call(['/usr/bin/python', '/path/to/MyApp'])
$$ LANGUAGE plpythonu;

CREATE TRIGGER executePython 
AFTER INSERT ON messages 
FOR EACH ROW EXECUTE PROCEDURE callMyApp();

Lưu ý rằng điều này sẽ chạy như người dùng Postgres, do đó có thể có vấn đề về quyền.

Ngoài ra còn có một tiện ích mở rộng gọi là PL/SH, có thể được sử dụng, nhưng dường như không phải là một gói chính thức.

CREATE FUNCTION executePython()
RETURNS VOID
AS $$
#!/bin/sh
python /path/to/MyApp
$$
LANGUAGE plsh;

Bài đăng trên blog này có thể được quan tâm cho bạn.

Ngoài ra, đây gần như là một bản sao của chuỗi này có tên Run a Shell Script khi bản ghi cơ sở dữ liệu được ghi vào Postgres.

(Lưu ý: Tôi chưa kiểm tra bất kỳ mã nào trong số này.)

Tài liệu này dành cho một phiên bản không được hỗ trợ của PostgreSQL. Bạn có thể muốn xem cùng một trang cho phiên bản hiện tại hoặc một trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế. You may want to view the same page for the current version, or one of the other supported versions listed above instead.
You may want to view the same page for the current version, or one of the other supported versions listed above instead.

Ngôn ngữ thủ tục PL/Python cho phép các hàm PostgreSQL được viết bằng ngôn ngữ Python.PL/Python procedural language allows PostgreSQL functions to be written in the Python language.PL/Python procedural language allows PostgreSQL functions to be written in the Python language.

Để cài đặt PL/Python trong một cơ sở dữ liệu cụ thể, hãy sử dụng Tạo phần mở rộng plpythonu hoặc từ dòng lệnh shell sử dụng DbName createlang plpythonu (nhưng xem thêm Phần 42.1).

Mẹo: Nếu một ngôn ngữ được cài đặt vào Template1, tất cả các cơ sở dữ liệu được tạo sau đó sẽ tự động cài đặt ngôn ngữ. If a language is installed into template1, all subsequently created databases will have the language installed automatically. If a language is installed into template1, all subsequently created databases will have the language installed automatically.

Kể từ Postgresql 7.4, PL/Python chỉ có sẵn dưới dạng ngôn ngữ "không đáng tin cậy", có nghĩa là nó không cung cấp bất kỳ cách nào để hạn chế những gì người dùng có thể làm trong đó. Do đó, nó đã được đổi tên thành plpythonu. PLPython biến thể đáng tin cậy có thể trở lại trong tương lai, nếu một cơ chế thực hiện an toàn mới được phát triển trong Python. Người viết của một chức năng trong PL/Python không đáng tin cậy phải cẩn thận rằng chức năng không thể được sử dụng để làm bất cứ điều gì không mong muốn, vì nó sẽ có thể làm bất cứ điều gì có thể được thực hiện bởi người dùng đăng nhập làm quản trị viên cơ sở dữ liệu. Chỉ các siêu nhân mới có thể tạo các hàm trong các ngôn ngữ không đáng tin cậy như plpythonu.PostgreSQL 7.4, PL/Python is only available as an "untrusted" language, meaning it does not offer any way of restricting what users can do in it. It has therefore been renamed to plpythonu. The trusted variant plpython might become available again in future, if a new secure execution mechanism is developed in Python. The writer of a function in untrusted PL/Python must take care that the function cannot be used to do anything unwanted, since it will be able to do anything that could be done by a user logged in as the database administrator. Only superusers can create functions in untrusted languages such as plpythonu.PostgreSQL 7.4, PL/Python is only available as an "untrusted" language, meaning it does not offer any way of restricting what users can do in it. It has therefore been renamed to plpythonu. The trusted variant plpython might become available again in future, if a new secure execution mechanism is developed in Python. The writer of a function in untrusted PL/Python must take care that the function cannot be used to do anything unwanted, since it will be able to do anything that could be done by a user logged in as the database administrator. Only superusers can create functions in untrusted languages such as plpythonu.

Lưu ý: Người dùng của các gói nguồn phải đặc biệt cho phép xây dựng PL/Python trong quá trình cài đặt. (Tham khảo hướng dẫn cài đặt để biết thêm thông tin.) Người dùng của các gói nhị phân có thể tìm thấy PL/Python trong một gói con riêng biệt. Users of source packages must specially enable the build of PL/Python during the installation process. (Refer to the installation instructions for more information.) Users of binary packages might find PL/Python in a separate subpackage. Users of source packages must specially enable the build of PL/Python during the installation process. (Refer to the installation instructions for more information.) Users of binary packages might find PL/Python in a separate subpackage.

Tôi có một tập lệnh Python chứa trong đó một lệnh SQL. Khi tôi thực hiện điều này thông qua bảng điều khiển QGIS Python, nó cũng chạy trơn tru và trả về các kết quả dự kiến ​​mà không gặp vấn đề gì.

Tôi muốn biết liệu có thể chạy kịch bản Python trong pgadmin không? Có khả năng thêm như một bảng điều khiển Python vào pgadmin hoặc một cái gì đó khác để đạt được điều này?

Lý do tôi hỏi chỉ đơn giản là vì nếu có thể tôi muốn chạy mọi thứ thông qua một chương trình trong trường hợp này là pgadmin vì phần lớn các bước của tôi nằm trong SQL và đó chỉ là một bước mà tôi đang sử dụng Python.

Sẽ rất hữu ích khi biết liệu có thể và làm thế nào để thực hiện hoặc nếu nó sẽ nỗ lực nhiều hơn giá trị của nó vì các quy trình như bây giờ tất cả đều hoạt động.

Vince

19.2K12 Huy hiệu vàng41 Huy hiệu bạc62 Huy hiệu đồng12 gold badges41 silver badges62 bronze badges12 gold badges41 silver badges62 bronze badges

Hỏi ngày 18 tháng 4 năm 2018 lúc 15:31Apr 18, 2018 at 15:31Apr 18, 2018 at 15:31

Tôi nghĩ rằng bạn đang cố gắng sử dụng Postgres và Python cùng nhau. Một tùy chọn có thể là:

  1. Bạn sử dụng pyscopg2 để thực hiện tập lệnh Postgres của bạn và trả kết quả của bạn thành Python (bạn có thể sử dụng PL/PGSQL để tạo chức năng và sau đó gọi hàm đó bằng psycopg2 trong python).
  2. Sau đó thực hiện xử lý thêm trong Python.
  3. Cuối cùng, trả lại kết quả cho cơ sở dữ liệu Postgres bằng PSYCOPG2.

Hoặc bạn có thể sử dụng pgadmin để tạo tiện ích mở rộng PL/python như sau

CREATE EXTENSION plpythonu;

Nhưng tôi chưa bao giờ làm điều đó bản thân bạn, bạn có thể tham khảo liên kết này để được giúp đỡ thêm.

https://www.postgresql.org/docs/9.6/static/plpython.html. Hy vọng điều này trả lời bạn đặt câu hỏi.

Đã trả lời ngày 19 tháng 4 năm 2018 lúc 4:17Apr 19, 2018 at 4:17Apr 19, 2018 at 4:17

Asad Abbasasad AbbasAsad AbbasAsad Abbas

1.5447 Huy hiệu bạc25 Huy hiệu Đồng7 silver badges25 bronze badges7 silver badges25 bronze badges

Làm cách nào để chạy một tập tin python trong postgresql?

Cài đặt PSYCOPG2 bằng PIP Cài đặt PSYCOPG2 và nhập nó vào tệp của bạn. Tham khảo kết nối cơ sở dữ liệu Python PostgreSQL để kết nối với cơ sở dữ liệu PostgreSQL từ Python bằng PSYCOPG2. Tiếp theo, sử dụng kết nối. phương thức con trỏ () để tạo một đối tượng con trỏ. install psycopg2 and import it in your file. Refer to Python PostgreSQL database connection to connect to PostgreSQL database from Python using PSycopg2. Next, use a connection. cursor() method to create a cursor object. install psycopg2 and import it in your file. Refer to Python PostgreSQL database connection to connect to PostgreSQL database from Python using PSycopg2. Next, use a connection. cursor() method to create a cursor object.

Làm cách nào để chạy kịch bản Python từ một thủ tục được lưu trữ trong Postgres?

Thiết lập kết nối với cơ sở dữ liệu PostgreSQL từ Python bằng cách chuyển chuỗi kết nối sang PSYCOPG2.kết nối () hàm.Sau đó, gọi hàm psyCopg2 callProc (), có hai tham số, tên của quy trình được lưu trữ và các tham số của quy trình được lưu trữ.

Postgresql có hoạt động với Python không?

PostgreSQL có thể được tích hợp với Python bằng mô -đun PSYCOPG2.SYCOPG2 là 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, và ổn định như một tảng đá.. sycopg2 is a PostgreSQL database adapter for the Python programming language. psycopg2 was written with the aim of being very small and fast, and stable as a rock.. sycopg2 is a PostgreSQL database adapter for the Python programming language. psycopg2 was written with the aim of being very small and fast, and stable as a rock.

Làm thế nào để Python tích hợp với PostgreSQL?

Thiết lập kết nối bằng Python, bạn có thể tạo các kết nối mới bằng hàm Connect ().Điều này chấp nhận các tham số kết nối cơ bản như dbname, người dùng, mật khẩu, máy chủ, cổng và trả về một đối tượng kết nối.Sử dụng chức năng này, bạn có thể thiết lập kết nối với PostgreSQL.create new connections using the connect() function. This accepts the basic connection parameters such as dbname, user, password, host, port and returns a connection object. Using this function, you can establish a connection with the PostgreSQL.create new connections using the connect() function. This accepts the basic connection parameters such as dbname, user, password, host, port and returns a connection object. Using this function, you can establish a connection with the PostgreSQL.