Can you please try trunk?

On Sep 20, 8:09 am, Carl <carl.ro...@gmail.com> wrote:
> It took a bit of binary upgrading to pin down this issue but I#ve
> found that it's between 1.84.4 and 1.85.1
>
> However since 1.85.1 (thru to 1.85.3) selects and inserts to the
> datastore fail when I use a SQLCustom definition (see details below).
>
> On dev_appserver all continues to work fine.
> But locally on sqlite...  operations on the datastore fail at gluon/
> sql.py (in v1.85.1 it's line 3323) class Set, parse() after line "elif
> field_type == 'datetime'\"
> (y, m, d) = [int(x) for x in str(value)[:10].strip().split('-')]
> ValueError: need more than 1 value to unpack
>
> Background:
> Locally Web2py drops the microseconds from datetime. On GAE it does
> not.
> I need the accuracy so I added the following db.py to define a
> Fieldtype 'timestamp':
>
> if request.env.web2py_runtime_gae:
>     from gluon.contrib.gql import *
>     db = DAL('gae')
>     session.connect(request, response, db=db)
>     timestamp = 'datetime'
> else: # else use a normal relational database
>     db = DAL('sqlite://storage.sqlite')
>     from gluon.sql import SQLCustomType
>     import datetime
>     from time import mktime, localtime
>     timestamp = SQLCustomType(type='datetime',
>                               native='NUMERIC(16,6)',
>                               encoder=(lambda x:
> str(mktime(x.timetuple()) + x.microsecond/1000000.0)),
>                               decoder=(lambda x: datetime.datetime(*
> (list(localtime(int(x))[:6])+[int(round(x%1,6)*1000000)]) )))
>
> Is this definition of timestamp using SQLCustomType no longer
> appropriate/workable?
> Tables that don't include a timestamp field work correct in 1.84.x and
> 1.85.x

Reply via email to