9.1第四十二章

From PostgreSQL wiki
Jump to navigationJump to search

PL/Python这门过程语言让你你可以用Python语言写PostgreSQL函数.

要在具体的数据库里安装PL/Python,使用CREATE EXTENSION plpythonu指令,或者在Shell命令行环境下用createlang plpythonu dbname命令

提示::如果一个语言被安装到数据库模板Template1里面,那么所有后续创建的数据库都自动安装了这门语言

在PosgreSQL7.4版本里面,PL/Python仅仅被当作一门不可信任的语言而使用,也就意味着:他不提供任何方法来限制用户用它能做什么.因为它被另外命名为plpython。如果在Python中能开发一个安全的执行机制,可信任变体plpython将来可能能再次可用。使用不可信任的PL/Python写函数的开发者要注意:你的函数不能用来做任何意图外的多余之事。因为这些函数可以用来做任何数据库管理员角色权限可做的事情.只有超级用户可以写函数时用不可信任的语言,比如pypython.

注意:使用源码包的用户,在PL/Python的安装过程中必须明确启用其编译构建过程.(更多信息请参考安装说明章节。)二进制包的使用者可以在一个单独的子包中找到PL/Python.

42.1、Python 2 VS Python 3

PL/Python同时支持Python2和Python3两种语言变体。(PostgreSQL安装说明部分可能包含更精确的最小Python支持版本集的详细信息。)因为Python2和Python3两种语言的变体在一些重要方面是不兼容的,PL/Python使用下面的命名和转换模型来避免两种语言的混合。

  • 用plpython2u命名的PostgreSQL语言实现基于Python2语言变体的PL/Python。
  • 用plpython3u命名的PostgreSQL语言实现基于Python3语言变体的PL/Python。
  • 用plpythonu命名的语言实现基于默认Python版本语言变体的PL/Python。目前的默认版本是Python2。(这个PostgreSQL数据库环境内的默认版本和你操作系统环境内安装的Python默认版本没有任何关系,比如Linux系统上默认安装版本可能是/usr/bin/python.)在PostgreSQL遥远来来的某个发行版本中,数据库环境内的默认Python版本可能会变为Python3,这个问题实际取决于Python语言社区本身在向Python3版本迁移方面的工作进展.