plpythonu_PL/Python安装和使用

文章目录

PostgreSQL可以支持多种存储过程语言,官方支持的除了PL/pgSQL,还有TCL,Perl,Python。

本文使用源码安装PL/Python过程语言支持,并简介PL/Python的一些简单的入门。如果是使用安装包安装的话,可以参考1。

参考PostgreSQL的官方文档,使用源码安装的时候,需要在之前编译的时候就启用--with-python选项。

1

2

3Note: Users of source packages must specially enable the build of PL/Python during the installation process. (Refer to the installation instructions for more information.) Users of binary packages might find PL/Python in a separate subpackage.

注意: 使用源码包的用户必须在安装过程中声明打开 PL/Python 的制作。 (请参考安装指导获取更多信息。)二进制包的用户可能会在独立的子包中找到 PL/Python。

PostgreSQL的编译安装可以参考我之前的博客,这里和这里。先做PostgreSQL的configure,

1[postgres@anzhy postgresql]$ ./configure --prefix=$HOME/postgres --enable-depend --enable-cassert --enable-debug --with-python

运行结果提示有错,找不到Python.h,需要安装python-devel。

之后再configure就正常了,之后的步骤就是一般的用源码安装PostgreSQL的步骤,不再赘述。

安装之后启动PostgreSQL,然后需要注册plpythonu这个语言扩展,根据官方文档,可以用以下两种等价的方法。一种是在命令行下运行createlang

1[postgres@anzhy ~]$ createlang plpythonu test

上面的test参数表示数据库名,即在test数据库上启用plpythonu。还有一种是用psql登陆数据库之后运行create extension,

1test=# create extension plpythonu;

由于Python有Python2和Python3两个版本,以上是使用默认的Python,也就是Python2。如果需要指明是哪个Python版本,可以将上述命令中的plpythonu替换成plpython2u或plpython3u。

然后可以在psql中创建PL/Python的存储过程,如下

1

2

3

4

5

6

7

8

9

10CREATE OR REPLACE FUNCTION pyfib(n bigint)

RETURNS SETOF bigint

AS $$

a, b = 0, 1

fibnum = []

while b < n:

fibnum.append(b)

a, b = b, a+b

return fibnum

$$ LANGUAGE plpythonu;

如果之前的操作都正确,可以看到提示成功,

如果有问题的话,可以看到提示错误,plpythonu语言找不到,需要重新检查之前的操作,

创建的函数是用于计算fibonacci序列,可以试着运行一下,

1

2

3

4

5

6

7test=# select pyfib(3) as i;

i

---

1

1

2

(3 rows)

如果不需要PL/Python了,可以将这个扩展drop掉,

1test=# drop extension plpythonu;

可以看到提示,已经有function依赖了这个扩展,需要先将function先drop掉,或者使用DROP...CASCADE选项。如果drop function的话,需要注意,要把function的参数也加上,否则会报错,因为PostgreSQL是可以重载函数的,不同的参数但是拥有相同的函数名是合法的,被认为是不同的函数。drop所有的PL/Python的过程之后,就可以成功drop extension了。

1test=# drop function pyfib(bigint);

以上是PL/Python的安装和使用基础。本文参考了2,还有PostgreSQL 9.3官方文档3,4,以及8.1中文版文档5的对应章节。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值