如何在Postgres中使用Plpython3返回结果集

时间:2013-05-04 16:57:29

标签: python postgresql postgresql-9.2 plpython

plpython函数如何将结果集作为普通的sql查询结果集返回(而不是文本)。

这是功能定义 -

DROP FUNCTION IF EXISTS demo_report();
CREATE OR REPLACE FUNCTION demo_report()
    RETURNS SETOF <what-type>
AS $$
    rv = plpy.execute("SELECT * FROM test")
    return rv
$$ LANGUAGE plpython3u;

当我执行选择demo_report(); 时,它应该将结果集返回给客户端而不是text.Right现在我将其作为文本 - enter image description here

我在Windows上使用带有plpython3u的Postgres 9.2。

1 个答案:

答案 0 :(得分:2)

我找到了获得理想结果的方法 - 对于表:

CREATE TABLE public.test
(
   id serial NOT NULL,
   name   varchar(200) NOT NULL CHECK (name <> ''),
   salary int,
   created  date,
   CONSTRAINT id PRIMARY KEY (id),
) 
WITH (
  OIDS = FALSE,
  autovacuum_enabled = true
);

我的Plpython3u功能是 -

CREATE OR REPLACE FUNCTION demo_report()
  RETURNS SETOF test
AS $$
  resp = []
  rv = plpy.execute("SELECT * FROM test")
  for i in rv:
    resp.append(i)
  return resp

$$ LANGUAGE 'plpython3u' VOLATILE;

我查询它 -

select * from demo_report();

现在我得到了理想的回应 - enter image description here

到目前为止,这是一段相当不错的旅程。享受它。