PL/Python 过程语言允许 用 Python 语言 写 PostgreSQL 函数.
要在特定数据库里安装 PL/Python,使用 createlang plpython dbname。
注意: 使用源码包的用户必须在安装过程中声明打开 PL/Python 的制作 (请参考安装指导获取更多信息)。二进制包的用户可能会在 独立的子包中找到 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 的 null 值.
PostgreSQL函数变量可以通过全局的 args 列表获取. 在 myfunc 例子里, args[0] 包含当做文本参数传递的数值.对于 myfunc2(text, integer),args[0] 将包含 text 变量和整数变量 args[1].
全局字典SD可以用于在函数调用中间存储数据. 这个变量是私有静态数据.全局字典GD是公共数据, 可以在一个后端里的所有 python 函数之间使用. 用时小心.
每个函数都在 Python 解释器里获得自己的受限制的执行对象, 因此来自 myfunc 的全局数据很函数参数 是 myfunc2 所看不到的.这里的例外是 我们上面提到的GD字典.