从 PL/Python 函数中访问 PostgreSQL 函数
2017-10-05
768
有没有办法从 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。
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)
请阅读文档: 数据库访问函数。
klin
2017-10-05