历史版本。 PostgreSQL 7.3 已结束支持。 请参阅 当前版本手册.
第 22 章 PL/Python - Python 过程语言
PL/Python 过程语言允许用 Python 语言编写 PostgreSQL 函数。
要在某个特定数据库中安装 PL/Python,使用
createlang plpython 。
dbname
注意
源码包的用户必须在安装过程中特别启用 PL/Python 的构建(更多信息请参阅安装说明)。二进制包的用户可能会在一个单独的子包中找到 PL/Python。
22.1. PL/Python 函数 #
你编写的 Python 代码会被转换成一个函数。例如,
CREATE FUNCTION myfunc(text) RETURNS text
AS 'return args[0]'
LANGUAGE 'plpython';会被转换成
def __plpython_procedure_myfunc_23456():
return args[0]其中 23456 是该函数的 OID。
如果你不提供返回值,Python 返回默认的
None,这可能符合也可能不符合你的需要。语言模块把 Python 的
None 转换成 SQL 空值。
PostgreSQL 的函数参数可以在全局列表
args 中得到。在
myfunc 的例子中,args[0]
包含作为 text 参数传进来的任何内容。对于
myfunc2(text, integer),args[0]
将包含 text 变量,args[1] 包含 integer 变量。
全局字典 SD 可用于在函数调用之间存储数据。这个变量是私有静态数据。全局字典 GD 是公共数据,对一个会话中的所有 Python 函数可用。请小心使用。
每个函数在 Python 中得到自己的受限执行对象,因此来自
myfunc 的全局数据和函数参数对
myfunc2 不可用。例外是
GD 字典中的数据,如上所述。