0

有没有办法从 PL/Python 函数中访问 PostgreSQL 函数?

当我在 PL/pgSQL 中编写时,我可以直接调用它们。例如,我可以在 PL/pgSQL 中编写 char_length('Bob'),它会使用内置的 PostgreSQL 函数 char_length。当我为 PL/Python 尝试时,char_length 的错误是未定义的。是否有可以访问内置函数的命名空间?plpy.functions.whatever 或类似的东西?

我在 PostgreSQL 9.5.9 上使用 plpython3u。

4

1 回答 1

1

您可以使用函数plpy.execute(),示例执行任何 sql 命令:

create or replace function py_test(str text)
    returns int
    language plpython3u
as $$
    res = plpy.execute("select char_length('{}')".format(str))
    return res[0]["char_length"]
$$;

select py_test('abc');

 py_test 
---------
       3
(1 row) 

阅读文档:数据库访问功能。

于 2017-10-05T23:33:47.120 回答