no no no.

db(query).update(field=expression)

expression is not a python expression but an DAL expression that gets
translated into SQL.

This is wrong

 
db4.data_table.FreezeTime=datetime.strptime(db4.data_table.ReqTime.split(".")
[0], "%Y-%m-%dT%H:%M:%S")

because it assumes it gets evaluated by Python and not by the
database.

The only operators that web2py DAL can stranlated into SQL are those
supported by SQL:

a=b+c
a=b-c
a=b*c
a=b/c
a=b[c:d]
a=b.year()
a=b.day()
a=b.month()
a=b.hour()
a=b.minutes()
a=b.seconds()

and combinations therefore.

You can also do

from gluon.sql import Expression
db(...).update(field=Expression('...sql expression..')

and you can use any sql expression.

This is documented in the book.





On Nov 20, 12:43 pm, Lorin Rivers <lriv...@mosasaur.com> wrote:
> What about using a function? I need run db.table.field through split (the 
> time part has too many decimal places) and then convert from string to time
>
> Here's what I tried:
> db4((db4.data_table.ReqTime >="2010-11-08T22:09:00") & 
> (db4.data_table.ReqTime < "2010-11-08T22:09:10") & (db4.data_table.MacAddr == 
> "00000000000000DF")).update(db4.data_table.FreezeTime=datetime.strptime(db4.data_table.ReqTime.split(".")[0],
>  "%Y-%m-%dT%H:%M:%S"))
>
> and got:
> AttributeError: 'Field' object has no attribute 'split'
>
> On Nov 20, 2010, at 11:40 , mdipierro wrote:
>
> > something like this?
>
> > db(query).update(field1=db.table.field2+db.table.field3)
>
> > Massimo
>
> --
> Lorin Rivers
> Mosasaur: Killer Technical Marketing <http://www.mosasaur.com>
> <mailto:lriv...@mosasaur.com>
> 512/203.3198 (m)

Reply via email to