如何在PL / Python函数中获取DB用户名

时间:2017-10-18 10:19:48

标签: python postgresql greenplum

我有一个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中起作用

1 个答案:

答案 0 :(得分:2)

您应该使用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"]
$$;