↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2
历史版本。 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 字典中的数据,如上所述。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.