Sure.
In short: everything works ok.

In detail - see below.


(Pdb) l 1
  1     # -*- coding: utf-8 -*-
  2
  3     exec('from applications.%s.modules import cfg' %
request.application)
  4     db = DAL('oracle://%s/%...@%s'%(cfg.oralogin,cfg.orapassword,cfg.oradb),
pool_size=10)
  5
  6     db.define_table('mytable',
  7       Field('myfield','string'),
  8       Field('mydt','datetime'),
  9     )
 10
 11  -> import pdb;pdb.set_trace()
(Pdb) db.mytable.insert(myfield='aaa',mydt='2010-04-22 00:00:00')
1
(Pdb) db.mytable.insert(myfield='bbb',mydt='2010-04-22 10:00:00')
2
(Pdb) db.commit()
(Pdb) print db(db.mytable.mydt>'2010-04-22 09:00:00').select()
mytable.id,mytable.myfield,mytable.mydt
2,bbb,2010-04-22 10:00:00

(Pdb) print db(db.id>0).select()
*** KeyError: 'id'
(Pdb) print db(db.mytable.id>0).select()
mytable.id,mytable.myfield,mytable.mydt
1,aaa,2010-04-22 00:00:00
2,bbb,2010-04-22 10:00:00

(Pdb)


On Tue, Apr 20, 2010 at 6:20 PM, mdipierro <[email protected]> wrote:

> I think I understand better the problem. Oracle uses the same time for
> DATE and DATETIME, i.e. DATE.
> I made in trunk the change you suggested. Can you please check this
> does not break insert and select of Field('somename','date')?
>
> On Apr 20, 12:37 am, Alexey Nezhdanov <[email protected]> wrote:
> > Oh, well.
> > May be that's an Oracle bug then. I use my custom 'console.py' script
> here,
> > but output should be clear enough:
> >
> > BTW - time_start column was created by web2py with this line:
> >     Field('time_start','datetime'),
> >
> > sn...@nezhdanov:~/VTC/pinger/elixir$ ./console.py
> > select time_start from pinger_results where id=1;
> > [('TIME_START', <type 'cx_Oracle.DATETIME'>, 23, 7, 0, 0, 1)]
> > select time_start from pinger_results where time_start='2010-04-20
> > 15:16:17';
> > ORA-01861: литерал не соответствует формату строки
> > ALTER SESSION set NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS'
> > ok
> > select time_start from pinger_results where time_start='2010-04-20
> > 15:16:17';
> > [('TIME_START', <type 'cx_Oracle.DATETIME'>, 23, 7, 0, 0, 1)]
> > ==========
> > no comments
> >
> > Alexey
> >
> > On Mon, Apr 19, 2010 at 8:27 PM, mdipierro <[email protected]>
> wrote:
> > > taking a second look at the source code
> >
> > >            self._execute("ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-
> > > MM-DD';")
> > >            self._execute("ALTER SESSION SET NLS_TIMESTAMP_FORMAT =
> > > 'YYYY-MM-DD HH24:MI:SS';")
> >
> > > Now you propose adding:
> >
> > >            self._execute("ALTER SESSION set NLS_DATE_FORMAT = 'YYYY-
> > > MM-DD HH24:MI:SS';")
> >
> > > But date does not have HH224, MI, SS, only timestamp does.
> >
> > > On Apr 19, 11:19 am, Alexey Nezhdanov <[email protected]> wrote:
> > > > No, I'm all for it. Actually it sounds more like bugfix since atm
> web2py
> > > > can't make datetime queries on Oracle.
> >
> > > > On Mon, Apr 19, 2010 at 6:16 PM, mdipierro <[email protected]>
> > > wrote:
> > > > > There is no hook for this, but should this not be always the
> default?
> > > > > If so I am happy to add it to trunk. Any counterindication?
> >
> > > > > On Apr 19, 12:32 am, Alexey Nezhdanov <[email protected]> wrote:
> > > > > > Hi.
> > > > > > Sometimes I have to execute this line prior to making a query:
> > > > > >     oradb.executesql("ALTER SESSION set NLS_DATE_FORMAT =
> 'YYYY-MM-DD
> > > > > > HH24:MI:SS';")
> >
> > > > > > That is because Oracle by default uses different date format that
> > > causes
> > > > > my
> > > > > > queries to fail.
> > > > > > The problem is that doing that in model is incorrect - this
> should be
> > > > > > executed just once for each db connection.
> > > > > > Doing that just prior to query is inconvenient and still
> incorrect -
> > > I am
> > > > > > probably reusing same connection.
> > > > > > Can I somehow tell web2py to execute this sql right after calling
> > > > > connect()?
> >
> > > > > > Regards
> > > > > > Alexey
> >
> > > > > > --
> > > > > > Subscription settings:
> > > > >http://groups.google.com/group/web2py/subscribe?hl=en
>

Reply via email to