PL/Python安装和使用
更新日期:
PostgreSQL可以支持多种存储过程语言,官方支持的除了PL/pgSQL,还有TCL,Perl,Python。
本文使用源码安装PL/Python过程语言支持,并简介PL/Python的一些简单的入门。如果是使用安装包安装的话,可以参考1。
参考PostgreSQL的官方文档,使用源码安装的时候,需要在之前编译的时候就启用--with-python
选项。
PostgreSQL的编译安装可以参考我之前的博客,这里和这里。先做PostgreSQL的configure,
运行结果提示有错,找不到Python.h,需要安装python-devel。
之后再configure
就正常了,之后的步骤就是一般的用源码安装PostgreSQL的步骤,不再赘述。
安装之后启动PostgreSQL,然后需要注册plpythonu这个语言扩展,根据官方文档,可以用以下两种等价的方法。一种是在命令行下运行createlang
上面的test
参数表示数据库名,即在test
数据库上启用plpythonu。还有一种是用psql登陆数据库之后运行create extension
,
由于Python有Python2和Python3两个版本,以上是使用默认的Python,也就是Python2。如果需要指明是哪个Python版本,可以将上述命令中的plpythonu
替换成plpython2u
或plpython3u
。
然后可以在psql中创建PL/Python的存储过程,如下
如果之前的操作都正确,可以看到提示成功,
如果有问题的话,可以看到提示错误,plpythonu
语言找不到,需要重新检查之前的操作,
创建的函数是用于计算fibonacci序列,可以试着运行一下,
如果不需要PL/Python了,可以将这个扩展drop掉,
可以看到提示,已经有function依赖了这个扩展,需要先将function先drop掉,或者使用DROP...CASCADE
选项。如果drop function的话,需要注意,要把function的参数也加上,否则会报错,因为PostgreSQL是可以重载函数的,不同的参数但是拥有相同的函数名是合法的,被认为是不同的函数。drop所有的PL/Python的过程之后,就可以成功drop extension了。
以上是PL/Python的安装和使用基础。本文参考了2,还有PostgreSQL 9.3官方文档3,4,以及8.1中文版文档5的对应章节。