Thread: how to returns set of records in PL/python
Hi ,<br /><br /> Iam new to plpython,how can I return a recordset from a plpython function?<br /><br /> Is there is anyway give me an example;<br /><br /> <br />plpgsql function <br />--------------------------------<br /><br />CREATE ORREPLACE FUNCTION function_to_get_all_countries() RETURNS SETOF RECORD AS $BODY$<br /> DECLARE <br /><br /> r RECORD; <br /> <br />BEGIN<br /><br /> FOR r IN SELECT pk_bint_country_id,vchr_country FROM tbl_country LOOP<br/> RETURN NEXT r;<br /> END LOOP;<br /> RETURN;<br /><br />END<br />$BODY$ LANGUAGE 'plpgsql';<br/><br /><br /><br /><br />How i can get the same result using plpythonu and how I can call the function (isthere any user defined type required like in plpgsql)?<br /><br />Thanks in advance<br /><br />Anoop<br />
Anoop G wrote: >Hi , > > Iam new to plpython,how can I return a recordset from a plpython >function? > > Is there is any way give me an example; > > >plpgsql function >-------------------------------- > >CREATE OR REPLACE FUNCTION function_to_get_all_countries() RETURNS SETOF >RECORD AS $BODY$ >DECLARE > > r RECORD; > >BEGIN > > FOR r IN SELECT pk_bint_country_id,vchr_country FROM tbl_country LOOP > RETURN NEXT r; > END LOOP; > RETURN; > >END >$BODY$ LANGUAGE 'plpgsql'; > > > > >How i can get the same result using plpythonu and how I can call the >function (is there any user defined type required like in plpgsql)? > >Thanks in advance > >Anoop > > > Yes, plpython can return setofs. You may need to define a new type for that. After that you can return a list, tuple, dictionary, set, generator object, or any You may also check the plpython version, as i recall, its kind of *new* issue. This works on 8.2.5, python 2.5, For a simple case, something like that would work regression=# \d countries Table "public.countries" Column | Type | Modifiers --------------+-------------------+-----------country_id | integer |country_name | character varying | CREATE OR REPLACE FUNCTION get_countries() returns setof countries security definer as $$ return plpy.execute("select * from countries") $$ language plpythonu; Hope that helps. Gerardo
Anoop G wrote: >Hi , > > Iam new to plpython,how can I return a recordset from a plpython >function? > > Is there is any way give me an example; > > >plpgsql function >-------------------------------- > >CREATE OR REPLACE FUNCTION function_to_get_all_countries() RETURNS SETOF >RECORD AS $BODY$ >DECLARE > > r RECORD; > >BEGIN > > FOR r IN SELECT pk_bint_country_id,vchr_country FROM tbl_country LOOP > RETURN NEXT r; > END LOOP; > RETURN; > >END >$BODY$ LANGUAGE 'plpgsql'; > > > > >How i can get the same result using plpythonu and how I can call the >function (is there any user defined type required like in plpgsql)? > >Thanks in advance > >Anoop > > > Forgot to mention that postgres home page has some info about plpython. http://www.postgresql.org/docs/8.3/static/plpython-funcs.html Cya. Gerardo