Postgres 9.2では、トリガーとなるpythonプログラムを作成しようとしています。外部プログラム(ローカルディスク上のexe)を実行したいので、pythonを実行するには、次のような単純なプログラムを作成しようとすると、次のようになります。
CREATE FUNCTION one ()
RETURNS int
AS $$
# PL/Python function body
$$ LANGUAGE plpythonu;
エラーが発生します:
ERROR: language "plpythonu" does not exist
HINT: Use CREATE LANGUAGE to load the language into the database.
私が走るとき:
CREATE LANGUAGE plpythonu
エラーが発生します:
ERROR: could not access file "$libdir/plpython2": No such file or directory
私はWindows7とpython 2.5を使用しています。
私は多くの場所を調べましたが、解決策を見つけることができません。
何か案は?
Plpython3でこれを解決するには、次のことを行う必要がありました。
CREATE LANGUAGE plpython3u
更新:私はここにもっと良い説明を書きました: https://stackoverflow.com/a/24218449/39867
文字通り数日前に、私はこの問題を解決しました。解決策は非常に複雑です。ここに行きます。
Postgresqlでは、「CREATE LANGUAGEplpython3u」コマンドを使用してPython 3言語サポートをインストールします。多くの場合、「ロードできません」.....\plpython3というエラーが表示されます。 dll "エラー126。(正しくインストールされている場合、エラーは表示されないことに注意してください。)
上記のエラーが発生した場合は、pythonインストールディレクトリ(デフォルトはC:\ python32)に移動し、DLLのフォルダで「python3.dll」を探します。このファイルをPostgresqlにコピーします。 Postgresのインストールディレクトリにあるlib 'フォルダ(デフォルトはc:\ program files\postgres\9.x\lib\")。このコピーしたファイルの名前をpython32.dllに変更します。
ここで、「CREATELANGUAGEplpython3u」コマンドを再度実行します。今回はうまくいくはずです。
確認するには、postgresqlのシステムテーブルのpg_available_extensionsビューを確認してください。 plpython3uを含む行の「インストール済みバージョン」列には、バージョン番号が含まれている必要があります。
注:これはplpython3u言語でのみ機能します。 plpython2uの同様のプロセスはわかりません。
PostgresはPythonのActiveStateディストリビューションを使用します。おそらく、2.5が古すぎて、Postgresがplpython dllをロードできないか、適切なpythonがなかったためにインストールしませんでした。最近のpostgresは2.xではなくPython3に対するbuil6だと思います。 postgres libディレクトリでplpython3.dllを探して、必要なものを見つけることができます。
インストールされていますpython 3.2(x64)y postgres 9.3(x64)
このコードを実行しますCREATE EXTENSION plpython3u
PostgresSQLのバージョン「installation-note.html」を確認することを忘れないでください。postgresSQLには特定のpythonバージョンがあります。