Prev: How many packages there are in PyPI
Next: psycopg2 / psycopg2.DataError: invalid input syntax for typetimestamp with time zone:
From: Anton Shishkov on 31 Mar 2010 04:42 On Mar 31, 3:10 am, "D'Arcy J.M. Cain" <da...(a)druid.net> wrote: > On Tue, 30 Mar 2010 15:46:12 -0700 (PDT) > > ASh <anton.shish...(a)gmail.com> wrote: > > > > new_start_date = "NOW() - '29 days'::INTERVAL" > > > > self.dyndb.orderdb.query('''update xxxx set creation_date > > > > = %s > > > > where id_order = %s''', (new_start_date, "123")) > > > > Put single quotes around the first %s in the query. > > > Tried like you said, got this error: > > > psycopg2.ProgrammingError: syntax error at or near "NOW" > > LINE 1: update orderdb.orders set creation_date = 'E'NOW() - ''29 > > da... > > Right. I misread it. Please show us the exact error that you get with > the original code. > > -- > D'Arcy J.M. Cain <da...(a)druid.net> | Democracy is three wolveshttp://www.druid.net/darcy/ | and a sheep voting on > +1 416 425 1212 (DoD#0082) (eNTP) | what's for dinner. Error: cursor.execute(sql, params) File "/opt/local/lib/python2.5/site-packages/psycopg2/extras.py", line 118, in execute return _cursor.execute(self, query, vars, async) psycopg2.ProgrammingError: syntax error at or near "NOW" LINE 1: update orderdb.orders set creation_date = 'E'NOW() - ''29 da... ^
From: Anton Shishkov on 31 Mar 2010 06:50
On Mar 31, 11:29 am, Michael Ricordeau <michael.ricord...(a)gmail.com> wrote: > Hi > > You cannot add 'NOW() - '29 days'::INTERVAL' as a query because cursor.execute() will try to mogrify it. > > You can do : > import datetime > idays = psycopg2.extensions.adapt(datetime.timedelta(days=29)) > self.dyndb.orderdb.query('update xxxx set creation_date=(NOW() - %s) where id_order=%s', idays, "123")) > > Or: > import datetime > interval = datetime.datetime.now() - datetime.timedelta(days=29) > self.dyndb.orderdb.query('update xxxx set creation_date=%s where id_order=%s', (interval, "123")) > # But in this case current date/time is not evaluated from postgresql server but only from python env ... this may cause some bugs > > You may also try to add an interval type with psycopg2.extensions.INTERVAL (I never played with it) > > Le Tue, 30 Mar 2010 17:26:51 -0400, > Philip Semanchuk <phi...(a)semanchuk.com> a écrit : > > > > > > > On Mar 30, 2010, at 4:47 PM, ASh wrote: > > > > Hi, please help me understand why am I getting error with this query > > > > new_start_date = "NOW() - '29 days'::INTERVAL" > > > self.dyndb.orderdb.query('''update xxxx set creation_date > > > = %s > > > where id_order = %s''', (new_start_date, "123")) > > > > ... > > > psycopg2.DataError: invalid input syntax for type timestamp with time > > > zone: "NOW() - '29 days'::INTERVAL" > > > Hi Anton, > > It sounds to me like the problem is with your SQL rather than with > > psycopg2 or Python. Try the query directly in Postgres -- does it work > > there? If so, then your next step should be to ask on the psycopg2 > > mailing list that Google can find for you. > > > Good luck > > Philip thank you for good examples (bow) |