Look at this example:
[color=blue][color=green][color=darkred]
>>> import psycopg
>>> psycopg.__versi on__[/color][/color][/color]
'1.1.19'[color=blue][color=green][color=darkred]
>>> import datetime
>>> today = datetime.dateti me.today()
>>> co = psycopg.connect ('')
>>> cu = co.cursor()[/color][/color][/color]
[color=blue][color=green][color=darkred]
>>> cu.execute('CRE ATE TABLE example (date date)')
>>> cu.execute("INS ERT into example VALUES (%s)", (today,))[/color][/color][/color]
Traceback (most recent call last):
File "/usr/lib/python2.4/doctest.py", line 1243, in __run
compileflags, 1) in test.globs
File "<doctest __main__[6]>", line 1, in ?
cu.execute("INS ERT into example VALUES (%s)", (today,))
ProgrammingErro r: ERROR: syntax error at or near "17" at character 40
INSERT into example VALUES (2006-01-04 17:19:03.354615 )
Is there a smart way of solving this, without stripping the date by
hand?
Also, if I insert the date as a string
[color=blue][color=green][color=darkred]
>>> cu.execute("INS ERT into example VALUES ('2006-01-04')")
>>> co.commit()[/color][/color][/color]
I get back a DateTime object (I think a mxDateTime object)
[color=blue][color=green][color=darkred]
>>> cu.execute("SEL ECT * from example")
>>> d = cu.fetchone()[0]
>>> print type(d)[/color][/color][/color]
<type 'DateTime'>
and NOT a datetime.dateti me.
So I need an adaptation mechanism; alternatively it would be enough for
me to be able
to redefine the __str__ representation of psycopg DateTime objects (
which are defined
at C level, so I cannot just override the __str__ method).
Any hints? I am sure there is a custom way to do this.
Michele Simionato
[color=blue][color=green][color=darkred]
>>> import psycopg
>>> psycopg.__versi on__[/color][/color][/color]
'1.1.19'[color=blue][color=green][color=darkred]
>>> import datetime
>>> today = datetime.dateti me.today()
>>> co = psycopg.connect ('')
>>> cu = co.cursor()[/color][/color][/color]
[color=blue][color=green][color=darkred]
>>> cu.execute('CRE ATE TABLE example (date date)')
>>> cu.execute("INS ERT into example VALUES (%s)", (today,))[/color][/color][/color]
Traceback (most recent call last):
File "/usr/lib/python2.4/doctest.py", line 1243, in __run
compileflags, 1) in test.globs
File "<doctest __main__[6]>", line 1, in ?
cu.execute("INS ERT into example VALUES (%s)", (today,))
ProgrammingErro r: ERROR: syntax error at or near "17" at character 40
INSERT into example VALUES (2006-01-04 17:19:03.354615 )
Is there a smart way of solving this, without stripping the date by
hand?
Also, if I insert the date as a string
[color=blue][color=green][color=darkred]
>>> cu.execute("INS ERT into example VALUES ('2006-01-04')")
>>> co.commit()[/color][/color][/color]
I get back a DateTime object (I think a mxDateTime object)
[color=blue][color=green][color=darkred]
>>> cu.execute("SEL ECT * from example")
>>> d = cu.fetchone()[0]
>>> print type(d)[/color][/color][/color]
<type 'DateTime'>
and NOT a datetime.dateti me.
So I need an adaptation mechanism; alternatively it would be enough for
me to be able
to redefine the __str__ representation of psycopg DateTime objects (
which are defined
at C level, so I cannot just override the __str__ method).
Any hints? I am sure there is a custom way to do this.
Michele Simionato
Comment