关键字:
KingbaseES、plpython、python
1.Plpython简介
PL/Python过程语言允许用Python 语言编写函数。 PL/Python 只是一种“不可信”语言,这意味着它没有提供任何方法来限制用户在其中的所作所为,并且因此被命名为plpythonu。如果未来开发出在 Python 中的安全执行机制,可能会出现一种可信的变体plpython。不可信 PL/Python 中函数的编写者必须注意该函数不能被用来做任何它不应该做的事情,因为它将能做以数据库管理员用户登录能做的事情。只有超级用户能够创建plpythonu等不可信语言中的函数。 PL/Python 中的函数通过标准的CREATE FUNCTION语法声明:
CREATE FUNCTION funcname (argument-list)
RETURNS return-type
AS $$
# PL/Python 函数体
$$ LANGUAGE plpythonu;
函数体就是一个 Python 脚本。当函数被调用时,它的参数被当做列表args的元素传递,命名参数也被作为普通变量传递给 Python 脚本。使用命名参数通常可读性更好。Python 代码会以通常的方式返回结果,即使用return或者yield(在结果集合语句的情况中)。如果没有提供一个返回值,Python 会返回默认的None。PL/Python会把 Python 的None翻译成 SQL 空值。在一个过程中,Python代码的结果必须是None(通常实现为结束过程时不写return语句或者使用不带参数的return),否则将会发生错误。
2.Plpython配置简介
2.1安装python
下载并解压Python安装包。
tar -zxvf Python-3.10.0.tgz
cd Python-3.10.0/
sudo yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
编译安装,注意在./configure参数中添加项 –enable-shared。
./configure --prefix=/home/zhaoyiwei/python/Python-3.10.0/ --enable-shared
make
make install
2.2安装python函数库
配置Python环境变量。
export PYTHON=/home/zhaoyiwei/python/Python-3.10.0/python
exportLD_LIBRARY_PATH=/home/zhaoyiwei/python/Python-3.10.0:$LD_LIBRARY_PATH
export PATH=/home/zhaoyiwei/python/Python-3.10.0//bin:$PATH
使用pip3安装函数库,如果有依赖库请先安装所依赖的库,报错检查环境变量是否正确。 pip3 install scipy-1.6.3-cp38-cp38-manylinux1_x86_64.whl --prefix /home/zhaoyiwei/python/Python-3.10.0
2.3配置KES环境
步骤同配置安装,但注意添加 ./configure --with-python。
./configure --prefix=/home/zhaoyiwei/postgresql --with-zlib --enable-nls --enable-integer-datetimes --with-openssl --enable-cassert --with-libxml --with-uuid=e2fs --enable-debug CFLAGS=-O0 --with-icu --with-includes=/opt/openssl-1.1.1q/include --with-libs=/opt/openssl-1.1.1q/lib --with-python
make world –j4
make install-world
2.4创建plpython3插件
create extension plpython3;
2.5其他
查看当前python支持的库版本。
import pip_internal
print(pip._internal.pep425tags.get_supported())
参考资料
《 KingbaseES客户端编程接口指南-Python》