Hướng dẫn can you run python in postgresql? - bạn có thể chạy python trong postgresql không?

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.

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.

Để 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.

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.

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.

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

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.)

Phần python PostgreSQL này chỉ cho bạn cách làm việc với cơ sở dữ liệu PostgreSQL bằng ngôn ngữ lập trình Python.

Python có & nbsp; trình điều khiển cơ sở dữ liệu khác nhau cho PostgreSQL. Hiện tại, PSYCOPG là bộ điều hợp cơ sở dữ liệu PostgreSQL phổ biến nhất cho ngôn ngữ Python. PSYCOPG thực hiện đầy đủ thông số kỹ thuật Python DB-API 2.0.

Phiên bản hiện tại của PSYCOPG là 2 hoặc psycopg2. Bộ điều hợp cơ sở dữ liệu PSYCOPG2 được triển khai trong C dưới dạng trình bao bọc LibPQ dẫn đến cả nhanh chóng và an toàn. PSYCOPG2 cung cấp nhiều tính năng hữu ích như con trỏ phía máy khách và phía máy chủ, thông báo và giao tiếp không đồng bộ, hỗ trợ lệnh sao chép, v.v.

Ngoài ra, trình điều khiển PsyCOPG2 hỗ trợ nhiều loại Python ngoài hộp. PsyCOPG2 khớp với các đối tượng Python với các loại dữ liệu PostgreSQL, ví dụ: liệt kê vào & nbsp; mảng, bộ dữ liệu để ghi và từ điển cho hstore. & Nbsp; Nếu bạn muốn tùy chỉnh và mở rộng điều chỉnh loại, bạn có thể sử dụng hệ thống điều chỉnh đối tượng linh hoạt.

Phần python postgresql này bao gồm các hoạt động phổ biến nhất để tương tác với postgresql trong ứng dụng Python:

  • Kết nối với máy chủ cơ sở dữ liệu PostgreSQL - chỉ cho bạn cách kết nối với máy chủ cơ sở dữ liệu PostgreSQL từ Python.
  • Tạo các bảng PostgreSQL mới trong Python - chỉ cho bạn cách tạo các bảng mới trong PostgreSQL từ Python.
  • Chèn dữ liệu vào bảng PostgreSQL trong Python - Giải thích cho bạn cách chèn dữ liệu vào bảng cơ sở dữ liệu PostgreSQL trong Python.
  • Cập nhật dữ liệu trong bảng PostgreSQL trong Python - Tìm hiểu nhiều cách khác nhau để cập nhật dữ liệu trong bảng PostgreSQL.
  • Giao dịch - Chỉ cho bạn cách thực hiện các giao dịch trong Python.
  • Truy vấn dữ liệu từ các bảng PostgreSQL - hướng dẫn bạn qua các bước truy vấn dữ liệu từ các bảng PostgreSQL trong ứng dụng Python.
  • Gọi chức năng PostgreSQL trong Python - chỉ cho bạn từng bước cách gọi chức năng PostgreSQL trong Python.
  • Gọi một thủ tục được lưu trữ sau PostgreSQL trong Python - hướng dẫn bạn cách gọi quy trình được lưu trữ từ trong một ứng dụng Python.
  • Xử lý dữ liệu Blob PostgreSQL trong Python, cung cấp cho bạn một ví dụ về việc chèn và chọn dữ liệu Blob PostgreSQL trong một ứng dụng Python.
  • Xóa dữ liệu khỏi các bảng PostgreSQL trong Python - chỉ cho bạn cách xóa dữ liệu trong bảng trong Python.

Đối với mục đích trình diễn, chúng tôi sẽ sử dụng cơ sở dữ liệu mẫu suppliers. Hình ảnh sau đây minh họa cấu trúc của cơ sở dữ liệu suppliers:

Hướng dẫn can you run python in postgresql? - bạn có thể chạy python trong postgresql không?

Cơ sở dữ liệu suppliers có các bảng sau:

  1. & NBSP; ________ 7 Bảng: Lưu trữ dữ liệu nhà cung cấp.
  2. & nbsp; ________ 8 Bảng: Lưu trữ dữ liệu bộ phận.
  3. & nbsp; ________ 9 Bảng: Lưu trữ bản vẽ của một phần.
  4. & nbsp; ________ 10 Bảng: Lưu trữ dữ liệu mà các bộ phận được cung cấp bởi nhà cung cấp nào.

Tôi có thể sử dụng python trong postgresql không?

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. Để 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).. To install PL/Python in a particular database, use CREATE EXTENSION plpythonu, or from the shell command line use createlang plpythonu dbname (but see also Section 42.1).

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.

Tại sao postgresql được sử dụng với python?

PostgreSQL, thường được viết là "postgres" và phát âm là "poss-gres", là một triển khai cơ sở dữ liệu quan hệ nguồn mở thường được sử dụng bởi các ứng dụng Python như một phụ trợ để lưu trữ dữ liệu và truy xuất.as a backend for data storage and retrieval.

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?

Các bước để gọi một thủ tục được lưu trữ sau PostgreSQL trong Python..
Conn = psycopg2.connect (DSN) ....
Cur = Conn.Cursor () ....
cur.execute ("gọi sp_name ( %s, %s);", (val1, val2)) ....
cur.execute ("gọi sp_name);") ....
Conn.Commit ();....
cur.close () Conn.close ().