如何在 PL/Python 函数中获取数据库用户名
How to get DB username in PL/Python function
我有一个 PL/Python 函数,如下所示
create function pl_python (database character)
returns character varying as
$BODY$
import subprocess
import getpass
import os
return getpass.getuser()
$BODY$
language plpythonu volatile
我通过 pgadmin III 以 XYZ 用户身份连接到 greenplum 数据库来执行上述功能
Select * from pl_python ('database')
以上函数返回的是管理员用户名,而不是执行该函数的用户的用户名。我需要执行函数的用户的用户名
当前结果:gpadmin
预期结果:XYZ
提前致谢
添加 postgresql 标记作为语法可能适用于 greenplum
你应该使用 Database Access Functions。请注意,您必须连接到数据库才能获取当前用户,因此该函数的参数有点意义。
create or replace function py_current_user()
returns text
language plpython3u
as $$
res = plpy.execute("select current_user")
return res[0]["current_user"]
$$;
我有一个 PL/Python 函数,如下所示
create function pl_python (database character)
returns character varying as
$BODY$
import subprocess
import getpass
import os
return getpass.getuser()
$BODY$
language plpythonu volatile
我通过 pgadmin III 以 XYZ 用户身份连接到 greenplum 数据库来执行上述功能
Select * from pl_python ('database')
以上函数返回的是管理员用户名,而不是执行该函数的用户的用户名。我需要执行函数的用户的用户名
当前结果:gpadmin
预期结果:XYZ
提前致谢
添加 postgresql 标记作为语法可能适用于 greenplum
你应该使用 Database Access Functions。请注意,您必须连接到数据库才能获取当前用户,因此该函数的参数有点意义。
create or replace function py_current_user()
returns text
language plpython3u
as $$
res = plpy.execute("select current_user")
return res[0]["current_user"]
$$;