Đâ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