PostgreSQL 9.4.5文書 | |||
---|---|---|---|
前のページ | 上に戻る | 第 43章PL/Python - Python手続き言語 | 次のページ |
PL/PythonはPython 2およびPython 3言語の両方をサポートします。 (PostgreSQLのインストール手順では、サポートするPythonの細かなマイナーバージョンに関して、より正確な情報が記載されています。) Python 2及びPython 3言語には重要な側面でいくつか互換性がありませんので、混在を防ぐためにPL/Pythonでは以下の命名ならびに移行計画が使用されています。
plpython2uという名前のPostgreSQL言語はPython 2言語に基づいたPL/Pythonを実装します。
plpython3uという名前のPostgreSQL言語はPython 3言語に基づいたPL/Pythonを実装します。
plpythonuという名前の言語はデフォルトのPython言語(現時点ではPython 2)に基づいたPL/Pythonを実装します。 (このデフォルトはどのローカルにインストールされたPythonがその"デフォルト"とみなされるか、例えば/usr/bin/pythonが何を示すか、とは独立しています。) PythonコミュニティにおけるPython 3への移行の進行状況に依存しますが、おそらく近い将来のPostgreSQLのデフォルトはPython 3に変わります。
この計画は、PEP 394内の、pythonコマンドの命名と移行に関する推奨に類似しています。
Python 2用のPL/PythonかPython 3用のPL/Python、またはその両方が利用できるかどうかは、構築時の設定またはインストールしたパッケージに依存します。
ティップ: どのバージョンのPythonがインストール時に検出されるか、または、PYTHON環境変数を使用してバージョンを明示的に設定することで、構築される亜種が決まります。 項15.4を参照してください。 1つのインストレーションで両方のPL/Pythonを利用可能にするためには、ソースツリーでconfigureと構築を2回行う必要があります。
この結果以下のような使用方法と移行戦略となります。
既存のユーザおよび現時点でPython 3に興味を持たないユーザはplpythonuという名前の言語を使用し、当分の間何も変更する必要はありません。 最終的なPython 3への移行を簡単にするために、Python 2.6/2.7への移行を介してコードを少しずつ"将来に備える"ことを勧めます。
実際には、多くのPL/Python関数はそのまま、またはわずかな変更を行うことでPython 3に移行されます。
Python 2に大きく依存するコードがあることが分かっていて、変更する予定がないユーザはplpython2u言語名を使用することができます。 これは、PostgreSQLでPython 2のサポートが完全になくなる、非常に先の将来まで動作し続けます。
Python 3に挑戦したいユーザは、現在の標準では永久に動作し続けるplpython3u言語名を使用できます。 遠い将来、Python 3がデフォルトになった時、美的な理由から"3"という文字はなくなることになるでしょう。
Python 3のみのオペレーティングシステム環境を構築したい、恐れを知らぬユーザは、pg_pltemplateの内容を変更して、plpythonuがplpython3uを示すようにすることができます。 ただし、世間一般と互換性がないインストレーションを作成していることを覚えておいてください。
また、Python 3への移植に関する情報についてはPython 3.0における新機能文書を参照してください。
Python 2を基にしたPL/PythonとPython 3を基にしたPL/Pythonを同じセッションで使用することはできません。 動的モジュール内のシンボルが相反するため、こうするとPostgreSQLサーバプロセスがクラッシュしてしまうためです。 あるセッション内でPythonのメジャーバージョンが混在させないための検査があり、不一致が見つかるとセッションは中断されます。 しかし別々のセッションからであれば、同じデータベースにおいて異なるPL/Pythonの両方を使用することができます。