plpython 9.2.2

本文介绍如何在PostgreSQL中添加plpython语言支持,包括修改Makefile、编译安装步骤及解决常见错误的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

plpython 9.2.2

分类: postgresql   164人阅读  评论(0)  收藏  举报

目录(?)[+]

注意,安装python时,需要--enable-shared

安装pg时,需要--with-python


如果python,重装报  error while loading shared libraries: libpython2.7
则需要

 vi /etc/ld.so.conf 添加/usr/local/Python2.7/lib

/sbin/ldconfig
/sbin/ldconfig -v


readline 和 readline-devel 最好安装好




PostgreSQL add plpython in database which compiled --without-python —— 德哥

群里的一位兄弟问到的一个问题, 当postgresql 软件在编译时未使用with-python或者使用了without-python选项时.

编译的数据库初始化后没有plpython函数语言.
如果后期要加入plpython语言应该怎么加?
我测试了一下, 是可以加入的, 过程如下 : 
1. 下载源码包如postgresql-9.2.2.tar.gz
2. 解压

          

tar -zxvf postgresql-9.2.2.tar.gz

3. 确保Python.h头文件存在
 
          
ocz@db - 172 - 16 - 3 - 150 ->  locate  Python . h
/ opt / greenplum - db - 4.2 . 2.4 / ext / python / include / python2 . 6 / Python . h
/ opt / soft_bak / Python - 3.2 . 3 / Include / Python . h
/ usr / include / python2 . 4 / Python . h
/ usr / local / include / python2 . 7 / Python . h
/ usr / local / include / python3 . 2m / Python . h
/ usr / share / doc / swig - 1.3 . 29 / Manual / Python . html

 

4. 进入postgresql 源码目录

          

cd postgresql-9.2.1/src/pl/plpython

5. 编辑Makefile
 
          
override  CPPFLAGS  :=   - I .   - I$ ( srcdir )  $ ( python_includespec )  $ ( CPPFLAGS )
改为
override  CPPFLAGS  :=   - I .   - I$ ( srcdir )  $ ( python_includespec )  $ ( CPPFLAGS )   - I / usr / include / python2 . 4

 

6. 编译安装
首先要把pg_config加入到路径中

 

export  PATH = /home/ digoal / pgsql9 . 2.1 / bin
gmake all
gmake install
/ bin / mkdir  - '/home/digoal/pgsql9.2.1/lib'
/ bin / sh  ../../../ config / install - sh  - - 755   plpython . so  '/home/digoal/pgsql9.2.1/lib/plpython.so'
/ bin / mkdir  - '/home/digoal/pgsql9.2.1/share/extension'
/ bin / sh  ../../../ config / install - sh  - - 644   ./ plpythonu . control  ./ plpythonu -- 1.0 . sql  ./ plpythonu -- unpackaged -- 1.0 . sql  '/home/digoal/pgsql9.2.1/share/extension/'

 

7. 创建plpythonu extension

          
postgres = # create extension plpythonu;
ERROR:  could not access file "$libdir/plpython2": No such file or directory

 

为啥会这样呢?
从第六步看到so文件是plpython.so.
但是控制文件 plpythonu.control中用到的是plpython2.so
 
           
root@db-172-16-3-150-> less plpythonu.control 
# plpythonu extension
comment = 'PL/PythonU untrusted procedural language'
default_version = '1.0'
module_pathname = '$libdir/plpython2'
relocatable = false
schema = pg_catalog
superuser = true

 

看起来直接编译plpython还是有点问题.
 
所以可以考虑第二种办法, 把整个PostgreSQL使用with-python全编译一遍. 
然后把plpython2.so和plpython*.sql拷贝到$PGHOME中.

           
root@db-172-16-3-150-> cd pgsql9.2.1/
root@db-172-16-3-150-> cd share/extension/
root@db-172-16-3-150-> ll|grep python
-rw-r--r-- 1 ocz  ocz   351 Jan  7 14:13 plpython2u--1.0.sql
-rw-r--r-- 1 ocz  ocz   196 Jan  7 14:13 plpython2u.control
-rw-r--r-- 1 ocz  ocz   402 Jan  7 14:13 plpython2u--unpackaged--1.0.sql
-rw-r--r-- 1 ocz  ocz   347 Jan  7 14:13 plpythonu--1.0.sql
-rw-r--r-- 1 ocz  ocz   194 Jan  7 14:13 plpythonu.control
-rw-r--r-- 1 ocz  ocz   393 Jan  7 14:13 plpythonu--unpackaged--1.0.sql

 

把以上SQL文件拷贝到老的$PGHOME/share/extension目录下. plpython2.so拷贝到$PGHOME/lib下.
 
就可以创建plpythonu和plpython2u语言了.
 
           
postgres=# create extension plpython2u;
CREATE EXTENSION
postgres=# create extension plpythonu;
CREATE EXTENSION

原地址 http://blog.youkuaiyun.com/hewy0526/article/details/8576024
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值