PL/Python 手続き言語を使用してPostgreSQL の関数をPython 言語で作成することができます。
PL/Python を特定のデータベースにインストールするには、createlang plpython dbname を使用します。
Note: ソースパッケージを使用するユーザは、インストールプロセスの間 PL/Python のビルドを特に使用可能にしておく必要があります (詳細については、インストール手順を参照してください)。 バイナリパッケージを使用する場合は、別個のサブパッケージに PL/Python が入っている可能性があります。
作成した Python のコードは関数に変換されます。以下に例を示します。
CREATE FUNCTION myfunc(text) RETURNS text AS 'return args[0]' LANGUAGE 'plpython';
は、以下のように変換されます。
def __plpython_procedure_myfunc_23456(): return args[0]
ここで、23456 はこの関数の OID です。
戻り値を用意していない場合、Python は不要かもしれない、デフォルトの None を返します。 この言語モジュールは、Python の None を SQL の NULL 値に変換します。
PostgreSQL 関数のパラメータは、グローバルな args リスト内で使用することができます。上の myfunc では args[0] には、渡されたものがテキスト引数として格納されています。myfunc2(text, integer) の場合は、args[0] には text 変数が、args[1] には integer 変数が格納されます。
グローバルな SD 辞書は、関数呼び出し間のデータ保存のために使用することができます。この変数はプライベートな静的データです。 グローバルな GD 辞書は、パブリックなデータであり、セッション内の全ての Python 関数で使用することができます。注意して使用して下さい。
各関数は、Python インタプリタ内で自身の制限された実行オブジェクトを入手します。 そのため、myfunc によるグローバルデータと関数の引数は myfunc2 から使用することはできません。 上記で説明した通り、GD 辞書内のデータは例外です。