sql >> データベース >  >> RDS >> PostgreSQL

言語の作成plpython3u– PostgreSQL 9.6

    これは、公開している最も速いブログの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


    1. MySQLレプリケーションを使用したライブマイグレーション

    2. シェルスクリプトからsqlplusに変数を渡す方法

    3. SQLServerデータベーススキーマ同期のプロセスを自動化する方法

    4. MySQLで10進数と16進数を変換する2つの方法