Thread: Re: Re: Can not decompress a compressed string under plpy!
> > Hi, > > I have stored a compressed string in a table field. > > The compressed string is created by zlib using python. > > I want to decompress this string by zlib under plpy but plpy fails to do > > so. Is plpy not support decompression? Why? > > > > Thanks! > > A bit more information is required. What version of Postgres are you using, what > OS? I am guessing that the compressed string is being created by a Python > program external to the database and then inserted into a field, is this > correct? You are then trying to decompress the string via a plpythonu function > within the database,correct? Did you import the zlib module into the plpythonu > function? > > -- > Adrian Klaver > aklaver@comcast.net > Yes, most of your guess is correct. I'm using postgresql 8.3.x and ms windows 2000. The compressed string is saved to the table in binary format using the psycopg. I had set the table field to bytea data type. I want to use the plpythonu to decompress the stored string. Althout I imported the zlib module, it still failed. I can successfully get back the decompressed string if I use the psycopg either inside or outside the plpythonu. But if without psycopg, plpythonu itself can not decompress the string. I can use the psycopg inside the plpythonu but I must need to write security information (including user name,password,server ip,port number,...) to the connection string inside plpythonu too. This is a problem. Thanks!
On Thursday 21 May 2009 3:26:22 pm Timmy wrote: > > Yes, most of your guess is correct. > I'm using postgresql 8.3.x and ms windows 2000. > The compressed string is saved to the table in binary > format using the psycopg. I had set the table field to bytea data type. > I want to use the plpythonu to decompress the stored > string. > Althout I imported the zlib module, it still failed. > I can successfully get back the decompressed string if > I use the psycopg either inside or outside the plpythonu. > But if without psycopg, plpythonu itself can not decompress the string. > I can use the psycopg inside the plpythonu but I must need to write > security information (including user name,password,server ip,port > number,...) to the connection string inside plpythonu too. This is a > problem. > > Thanks! Now you are getting outside my experience level. As a guess though I would say that psycopg is taking care of escaping the data on the way out, whereas your plpythonu function is not. See www.postgresql.org/docs/8.3/interactive/datatype-binary.html for more information. -- Adrian Klaver aklaver@comcast.net
On 2009-05-21, Timmy <timheit@netvigator.com> wrote: > Yes, most of your guess is correct. > I'm using postgresql 8.3.x and ms windows 2000. > The compressed string is saved to the table in binary > format using the psycopg. I had set the table field to bytea data type. > I want to use the plpythonu to decompress the stored > string. > Althout I imported the zlib module, it still failed. > I can successfully get back the decompressed string if > I use the psycopg either inside or outside the plpythonu. > But if without psycopg, plpythonu itself can not decompress the string. > I can use the psycopg inside the plpythonu but I must need to write security information (including user > name,password,server ip,port number,...) to the connection string inside plpythonu too. > This is a problem. try running stripslashes on the returned value. bytea values are returned double-slashed.