PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

TẠO NGÔN NGỮ plpython3u - PostgreSQL 9.6

Đây là một trong những blog nhanh nhất đang xuất bản :). Tôi đang xuất bản từ thiết bị đầu cuối của mình cũng như thử nghiệm của tôi để tạo ngôn ngữ plpython3u.

Sử dụng các bản phân phối đáng tin cậy hoặc không đáng tin cậy của python, chúng ta có thể tạo ngôn ngữ plpython3u trong PostgreSQL. Trong thử nghiệm của tôi, tôi đang thử với bản phân phối SCL (tôi không đề xuất, tôi đã thử để thử nghiệm) của python3.3 để tạo ngôn ngữ plpython3u.

Hãy bắt đầu tạo ngôn ngữ trên phiên bản nhị phân của cài đặt PostgreSQL 9.6 mà không cần chỉnh sửa gì.

-bash-4.2 $ psql
psql.bin (9.6.4)
Nhập “help” để được trợ giúp.

postgres =# TẠO NGÔN NGỮ plpython3u;
LỖI:không thể tải thư viện “/opt/PostgreSQL/9.6/lib/postgresql/plpython3.so”:libpython3.3m.so.1.0:không thể mở tệp đối tượng được chia sẻ:Không như vậy tệp hoặc thư mục

Rất tiếc, “/opt/PostgreSQL/9.6/lib/postgresql/plpython3.so” đang tìm kiếm thư viện “libpython3.3m.so.1.0”. Để xác nhận, hãy chạy lệnh “ldd”

-bash-4.2 $ cd /opt/PostgreSQL/9.6/lib/postgresql/
-bash-4.2 $ ldd plpython3.so
linux-vdso.so.1 => (0x00007fff9db12000)
libpython3.3m.so.1.0 => không tìm thấy
libc.so.6 => /lib64/libc.so.6 (0x00007fe75e42f000)
/lib64/ld-linux-x86-64.so. 2 (0x00007fe75ea27000)

Bây giờ, rõ ràng là chúng ta cần libpython3.3m.so.1.0 để tạo ngôn ngữ plpython3u.

Hãy bắt đầu với tư cách là người dùng root để cài đặt python3.3 từ SCL repo bằng cách bật nó.

#yum install centos-release-scl
#yum install python33

Sau khi cài đặt, hãy tìm thư viện “libpython3.3m.so.1.0” theo yêu cầu của plpython3.so

[root @ tools ~] # find / -name libpython3.3m.so.1.0 / opt / rh / python33 / root / usr / lib64 / libpython3.3m.so.1.0

Ngầu. Để sử dụng chuyển đổi gói Python3 với tư cách là người dùng postgres và đặt biến môi trường PYTHONPATH, PYTHONHOME, PATH và LD_LIBRARY_PATH.

-bash-4.2 $ xuất PYTHONPATH =/ opt / rh / python33 / root / usr
-bash-4.2 $ export PYTHONHOME =/ opt / rh / python33 / root / usr
-bash-4.2 $ export LD_LIBRARY_PATH =/ opt / rh / python33 / root / usr / lib64:$ LD_LIBRARY_PATH
-bash-4.2 $ export PATH =$ PYTHONPATH:$ PATH

Thử chạy lại “ldd” trên “/opt/PostgreSQL/9.6/lib/postgresql/plpython3.so” để kiểm tra các thư viện đã được chọn đúng cách chưa.

-bash-4.2 $ cd /opt/PostgreSQL/9.6/lib/postgresql/
-bash-4.2 $ ldd plpython3.so
linux-vdso.so.1 => (0x00007fffe26ed000)
libpython3.3m.so.1.0 => /opt/rh/python33/root/usr/lib64/libpython3.3m.so.1.0 (0x00007fd31c205000)
libc.so.6 => /lib64/libc.so. 6 (0x00007fd31be2d000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fd31bc11000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fd31ba0d000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007fd31b809000)
libm.so.6 => /lib64/libm.so.6 (0x00007fd31b507000)
/ lib64 / ld -linux-x86-64.so.2 (0x00007fd31c89c000)

Tốt đẹp. Tất cả chúng ta đều được sắp xếp. Hãy khởi động lại máy chủ và tạo ngôn ngữ plpython3u.

-bash-4.2 $ pg_ctl khởi động lại máy chủ
bắt đầu

-bash-4.2 $ psql
psql.bin (9.6.4)
Gõ “help” để được trợ giúp.

postgres =# TẠO NGÔN NGỮ plpython3u;
TẠO NGÔN NGỮ

Rất hay… Một bước cuối cùng, hãy kiểm tra ngôn ngữ plpython3u bằng cách tạo một hàm mẫu.

postgres=# CREATE OR REPLACE FUNCTION maxme (a integer, b integer) RETURNS integer AS
$$
if a > b:
return a
else
return b
$$ LANGUAGE plpython3u;
CREATE FUNCTION
postgres=# SELECT maxme(1, 2);
memax
-------
2
(1 row)

Tốt. Hãy tận hưởng !!

Raghav


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đăng ký sớm cho PGDay.IT 2011

  2. Tại sao truy vấn không được lưu trong tệp csv trong khi nó có vẻ bình thường trong bảng điều khiển postgresql

  3. HEX () và UNHEX () của MySQL tương đương trong Postgres?

  4. PostgreSQL:sự cố mã hóa trên Windows khi sử dụng tiện ích dòng lệnh psql

  5. Cài đặt PostgreSQL trên Ubuntu cho Ruby on Rails