Search Postgresql Archives

Re: plpython timestamp without time zone, showing up as text instead of timestamp

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 03/23/2014 08:19 AM, jared wrote:
My full function works fine as a standalone python script, but I was
having trouble getting it to work in Posgres.

Outside of Postgres it worked fine (because I was feeding in lists of
dates to test on).

The I did the script with psycopg2 calling in the below table and it
worked fine.  (in the docs for psycopg2 it says it converts the
timestamps into python dates, this would explain why it is working in
this scenario)

I finally figured out what the issue is, when using plpython and pulling
a date out of Postgres, it is treating it as text - is that intended or
am I doing something wrong?

Intended:

http://www.postgresql.org/docs/9.3/interactive/plpython-data.html

FYI, it would be a good idea to include the Postgres version. plpython has been undergoing a lot of changes recently, so it would help to peg where you are at in that sequence.




So the question is - why is plpython returning subject_a[0] as text
rather than an actual date that python can operate on?, is that
intended? (trying to learn how to think about this is a Postgres way)

See above.




Granted,
There is a workaround, I can just change my function to read:
return datetime.strptime(subject_a[0], '%Y-%m-%d %H:%M:%S') + defined_period
instead of:
return subject_a[0] + defined_period


However,
I am just trying to figure out why if postgres knows it is a day, it is
not telling python that in the function - like it would when I use psycopg2?

Because psycopg2 has an additional typecasting/adaptation code:

http://initd.org/psycopg/docs/usage.html#adaptation-of-python-values-to-sql-types

I find dateutil(https://labix.org/python-dateutil) a handy package to have in this situation. Use parse() from the parser module to do the heavy lifting of converting from a string into a date/datetime object.




--
Adrian Klaver
adrian.klaver@xxxxxxxxxxx


--
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux