これは、公開している最も速いブログの1つです:)。言語plpython3uを作成するためのテストとして、端末から公開しています。
信頼できるまたは信頼できないPythonのディストリビューションを使用して、PostgreSQLでplpython3u言語を作成できます。私のテストでは、言語plpython3uを作成するためにpython3.3のSCLディストリビューション(推奨していません、テストを試みました)を試しています。
調整せずに、PostgreSQL9.6インストールのバイナリバージョンで言語の作成を始めましょう。
-bash-4.2 $ psql
psql.bin(9.6.4)
ヘルプを表示するには「help」と入力します。postgres =#CREATE LANGUAGE plpython3u;
エラー:ライブラリ「/opt/PostgreSQL/9.6/lib/postgresql/plpython3.so」を読み込めませんでした:libpython3.3m.so.1.0:共有オブジェクトファイルを開くことができません:そのようなものはありませんファイルまたはディレクトリ
うーん、「/ opt / PostgreSQL / 9.6 / lib / postgresql / plpython3.so」は、ライブラリ「libpython3.3m.so.1.0」を探しています。確認するには、「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=>見つかりません
libc.so.6=> /lib64/libc.so.6(0x00007fe75e42f000)
/lib64/ld-linux-x86-64.so。 2(0x00007fe75ea27000)
さて、plpython3u言語を作成するにはlibpython3.3m.so.1.0が必要であることは明らかです。
rootユーザーとしてSCLリポジトリからpython3.3を有効にしてインストールすることから始めましょう。
#yum install centos-release-scl
#yum install python33
インストール後、plpython3.soに必要なライブラリ「libpython3.3m.so.1.0」を見つけます
[root @ tools〜]#find / -name libpython3.3m.so.1.0 / opt / rh / python33 / root / usr / lib64 / libpython3.3m.so.1.0
涼しい。 postgresユーザーとしてPython3バンドルスイッチを利用し、環境変数PYTHONPATH、PYTHONHOME、PATH、LD_LIBRARY_PATHを設定します。
-bash-4.2 $ export 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
「/opt/PostgreSQL/9.6/lib/postgresql/plpython3.so」で「ldd」を再度実行して、ライブラリが適切に選択されていることを確認してください。
-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)
良い。私たちはすべて準備ができています。サーバーを再起動して、言語plpython3uを作成しましょう。
-bash-4.2 $ pg_ctlrestart
サーバーの起動
-bash-4.2 $ psql
psql.bin(9.6.4)
ヘルプを表示するには「help」と入力します。
postgres =#CREATE LANGUAGE plpython3u;
CREATE LANGUAGE
とてもいいです…最後のステップとして、サンプル関数を作成してplpython3u言語をテストしましょう。
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)
良い。お楽しみください!!
Raghav