Thread: plpython integer types

plpython integer types

From
Emiliano Amilcarelli
Date:
Hi everibody,
a plpython function i'm writing fail with a strange ( to me ) message error:

.....
plan=ply.prepare("intert into text,text1,integer1,text"
values($1,$2,$3,$4)",["text","text","integer","text"])
ply.execute(plan,[var1,var2,var3,var4])
.....


The backend raise an errore saying:
    ERROR: type integer does not exist...

I can't understand this....
How can i solve this problem, or, say, how can I cast python variables?


Re: plpython integer types

From
Tom Lane
Date:
Emiliano Amilcarelli <amiemi@tin.it> writes:
> a plpython function i'm writing fail with a strange ( to me ) message error:

> .....
> plan=ply.prepare("intert into text,text1,integer1,text"
> values($1,$2,$3,$4)",["text","text","integer","text"])
> ply.execute(plan,[var1,var2,var3,var4])
> .....

> The backend raise an errore saying:
>     ERROR: type integer does not exist...

Does it work if you say "int4" instead?

            regards, tom lane

Re: plpython integer types

From
Emiliano Amilcarelli
Date:
No, it doesn,'t work if i use int4
I solved the problem casting the type:

plan=plpy.prepare("INSERT INTO
\"tmp_test\"(\"AGENT\",\"ERRORE\",\"PROVE_FALLITE\",\"DATA_ORA_ACCESSO\")
values($1,$2,$3::int,$4)",["text","text","text","text"])

Thanks for help....

Regards.

Emil


Tom Lane ha scritto:
> Emiliano Amilcarelli <amiemi@tin.it> writes:
>
>> a plpython function i'm writing fail with a strange ( to me ) message error:
>>
>
>
>> .....
>> plan=ply.prepare("intert into text,text1,integer1,text"
>> values($1,$2,$3,$4)",["text","text","integer","text"])
>> ply.execute(plan,[var1,var2,var3,var4])
>> .....
>>
>
>
>> The backend raise an errore saying:
>>     ERROR: type integer does not exist...
>>
>
> Does it work if you say "int4" instead?
>
>             regards, tom lane
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: Don't 'kill -9' the postmaster
>


Re: plpython integer types

From
Michael Fuhr
Date:
On Thu, Nov 17, 2005 at 03:46:46PM +0100, Emiliano Amilcarelli wrote:
> No, it doesn,'t work if i use int4

int4 works for me in PostgreSQL 8.1.0 and 8.0.4:

CREATE TABLE foo (
    i  integer,
    f  float8,
    n  numeric,
    t  text,
    d  date
);

CREATE FUNCTION populate() RETURNS boolean AS $$
query = 'INSERT INTO foo (i, f, n, t, d) VALUES ($1, $2, $3, $4, $5)'
types = ('int4', 'float8', 'numeric', 'text', 'date')
plan = plpy.prepare(query, types)
plpy.execute(plan, (1, 2.3, 4.56, 'test', '2005-11-17'))
return True
$$ LANGUAGE plpythonu VOLATILE;

SELECT populate();
 populate
----------
 t
(1 row)

SELECT * FROM foo;
 i |  f  |  n   |  t   |     d
---+-----+------+------+------------
 1 | 2.3 | 4.56 | test | 2005-11-17
(1 row)

--
Michael Fuhr