微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PostgreSQL PL/Python - Python Procedural Language 安装

PL/Python - Python Procedural Language 安装

前提是你系统里安装了python2,python3,pg数据库

  • 查看系统提供plpython包(已经编译好的)。
[root@localhost ~]# dnf search python |grep postgresql
python3-postgresql.x86_64 : Connect to Postgresql with Python 3
python-storm-postgresql.x86_64 : Postgresql backend for python-storm
postgresql-plpython.x86_64 : The Python2 procedural language for Postgresql
postgresql95-plpython.x86_64 : The Python procedural language for Postgresql
postgresql94-plpython.x86_64 : The Python procedural language for Postgresql
postgresql-plpython3.x86_64 : The python3 procedural language for Postgresql
postgresql94-python-debuginfo.x86_64 : Debug @R_638_4045@ion for package
                                     : postgresql94-python
postgresql94-python.x86_64 : Development module for Python code to access a
python-testing.postgresql.noarch : Automatically setup a Postgresql testing
python3-testing.postgresql.noarch : Automatically setup a Postgresql testing

我用的是fedora22系统。postgresql-plpython.x86_64、postgresql-plpython3.x86_64是我们需要安装的(Python2和python3版本都支持)。

[root@localhost ~]# dnf install postgresql-plpython.x86_64
[root@localhost ~]# dnf install postgresql-plpython3.x86_64
  • 检查一下安装目录是否有插件
-bash-4.3$ pwd
/usr/share/pgsql/extension
-bash-4.3$ ll |grep python
-rw-r--r--. 1 root root   351 6月  13 03:06 plpython2u--1.0.sql
-rw-r--r--. 1 root root   196 6月  13 03:06 plpython2u.control
-rw-r--r--. 1 root root   402 6月  13 03:06 plpython2u--unpackaged--1.0.sql
-rw-r--r--. 1 root root   351 6月  13 03:06 plpython3u--1.0.sql
-rw-r--r--. 1 root root   196 6月  13 03:06 plpython3u.control
-rw-r--r--. 1 root root   402 6月  13 03:06 plpython3u--unpackaged--1.0.sql
-rw-r--r--. 1 root root   347 6月  13 03:06 plpythonu--1.0.sql
-rw-r--r--. 1 root root   194 6月  13 03:06 plpythonu.control
-rw-r--r--. 1 root root   393 6月  13 03:06 plpythonu--unpackaged--1.0.sql
-bash-4.3$

plpython3u.control、plpython2u.control等已经有了。

CREATE EXTENSION plpython3u;
 CREATE EXTENSION plpython2u;

上述sql的执行可以在pgAdmin IDE工具里执行(有权限用户)。可以查看是否安装了扩展。

CREATE FUNCTION pymax (a integer,b integer)
  RETURNS integer
AS $$
  if a > b:
    return a
  return b
$$ LANGUAGE plpython3u;

执行一下:

select pymax(12,13);

输出13。

pgAdmin 查看已经安装的扩展图:

错误处理:

错误处理错误: 无法打开扩展控制文件 "/usr/share/pgsql/extension/plpythonu3.control": 没有那个文件或目录

********** 错误 **********

错误: 无法打开扩展控制文件 "/usr/share/pgsql/extension/plpythonu3.control": 没有那个文件或目录sql 状态: 58P01

上述错误表示插件安装包没能安装正确。必须确保pg扩展目录内有,才可以。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐