This >db.table.field.sum().with_alias()
is invalid syntax. You need to give it a name db.table.field.sum().with_alias('thesum') On Apr 9, 1:43 pm, Thadeus Burgess <thade...@thadeusb.com> wrote: > db.table.field.sum().with_alias() > > Traceback (most recent call last): > File "/home/tburgess/Applications/web2py/gluon/restricted.py", line > 173, in restricted > exec ccode in environment > File > "/home/tburgess/Applications/web2py/applications/pms/controllers/default.py", > line 305, in <module> > File "/home/tburgess/Applications/web2py/gluon/globals.py", line 96, > in <lambda> > self._caller = lambda f: f() > File "/home/tburgess/Applications/web2py/applications/pms/models/db.py", > line 277, in current_R > return db(db.R.id == > RID).select(db.R.sum().with_alias('current_R')).first().current_R > File "/home/tburgess/Applications/web2py/gluon/sql.py", line 3276, in select > return self._db._adapter.select(self._query,*fields,**attributes) > File "/home/tburgess/Applications/web2py/gluon/sql.py", line 514, in select > rows = response(query) > File "/home/tburgess/Applications/web2py/gluon/sql.py", line 505, in > response > self.execute(query) > File "/home/tburgess/Applications/web2py/gluon/sql.py", line 589, in execute > return self.log_execute(*a, **b) > File "/home/tburgess/Applications/web2py/gluon/sql.py", line 583, in > log_execute > ret = self.cursor.execute(*a,**b) > OperationalError: near "AS": syntax error > > -Thadeus > > On Thu, Apr 8, 2010 at 2:57 PM, Thadeus Burgess <thade...@thadeusb.com> wrote: > > Massimo, I am attaching a application that can replicate this issue. > > > Works fine on sql.py > > > Breaks on dal.py > > > This application is designed after my big application, the represent > > functions HAVE to stay the same, there cannot be ANY code edits to > > them! > > > Make sure to run with sql.py first to confirm that it IS working > > correctly. THEN copy dal.py to sql.py, restart web2py, and then > > confirm that it no longer works. > > > -Thadeus > > > On Thu, Apr 8, 2010 at 10:12 AM, Thadeus Burgess <thade...@thadeusb.com> > > wrote: > >> Agreed. Lets narrow this down, I will see if I can replicate the issue > >> on a smaller scale. > > >> -Thadeus > > >> On Wed, Apr 7, 2010 at 11:08 PM, Massimo Di Pierro > >> <mdipie...@cs.depaul.edu> wrote: > >>> I guess my question is " why does it not throw an exception in sql.py?" It > >>> should since > > >>>>> db.dog.owner.represent = lambda value: "%s" % db.person[value].name > > >>> when called with value==None should always result in the error you see in > >>> dal.py. > > >>> Can you help me debug this? My problem is not why it does not work with > >>> dal.py (that is the part I understand). My problem is how is it that it > >>> works with sql.py? > > >>> On Apr 7, 2010, at 10:58 PM, Thadeus Burgess wrote: > > >>>> I am not using different datasets, or using different queries. > > >>>> So here we go, let me explain in every minuet detail this process. > > >>>>>>> cd ~ > >>>>>>> hg clonehttps://web2py.googlecode.com/hgweb2py > >>>>>>> cd web2py > >>>>>>> ln -s ~/path/to/my/application applications/pms > >>>>>>> python web2py.py -a <recycle> > > >>>> *go to 127.0.0.1:8000/pms/default/index > >>>> *everything works perfectly, I see the page as it should be with > >>>> records in place, providing the proper "names" (this is only three > >>>> records, I KNOW they have values) > > >>>>>>> kill -SIGTERM <web2py process id> > >>>>>>> cd gluon/ > >>>>>>> mv sql.py sql.bak.py > >>>>>>> ln -s dal.py sql.py > >>>>>>> cd .. > >>>>>>> python web2py.py -a <recycle> > > >>>> *go to 127.0.0.1:8000/pms/default/index > >>>> *receive stacktrace. > > >>>>>>> kill -SIGTERM <web2py process id> > >>>>>>> cd gluon/ > >>>>>>> rm sql.py > >>>>>>> mv sql.bak.py sql.py > >>>>>>> cd .. > >>>>>>> python web2py.py -a <recycle> > > >>>> *go to 127.0.0.1:8000/pms/default/index > >>>> *behold, everything works perfectly. > > >>>> Even IF, and I say IF my dataset has a bad reference to a None record, > >>>> and it executes just fine with sql.py, it should execute with dal.py > >>>> exactly the same, it should not be throwing the exception. > > >>>> -Thadeus > > >>>> On Wed, Apr 7, 2010 at 10:10 PM, Massimo Di Pierro > >>>> <mdipie...@cs.depaul.edu> wrote: > > >>>>> I assume it is > > >>>>>> db.dog.owner.represent = lambda value: "%s" % db.person[value].name > > >>>>> The stacktrace you get is because one of your records has owner==None > >>>>> hence > >>>>> db.person[value] is also None and None has no .name. It is not a bug. > >>>>> You > >>>>> are doing different queries or using different datasets. > > >>>>> Anyway if you do > > >>>>>> db.define_table('person', Field('name'), format='%(name)s') > >>>>>> db.define_table('dog', Field('nickname'), Field('owner', db.person)) > > >>>>> the requires is set automatically and should take care of this > >>>>> exception. > > >>>>> On Apr 7, 2010, at 10:01 PM, Thadeus Burgess wrote: > > >>>>>> I am defining this function. > > >>>>>> db.define_table('person', Field('name')) > >>>>>> db.define_table('dog', Field('nickname'), Field('owner', db.person)) > > >>>>>> db.dog.owner.represent = lambda value: "%s" % db.owner[value].name > > >>>>>> This works in sql.py > > >>>>>> This does not work in dal.py > > >>>>>> You said you made changes, I tested, works just fine on sql.py, and > >>>>>> has been for quite a while, however I get that stacktrace when I use > >>>>>> dal.py. > > >>>>>> -Thadeus > > >>>>>> On Wed, Apr 7, 2010 at 8:34 PM, mdipierro <mdipie...@cs.depaul.edu> > >>>>>> wrote: > > >>>>>>> I guess I do not understand. Who defined this represent function? is > >>>>>>> it not in your code? Are you saying this is a bug in sql.py? > > >>>>>>> On Apr 7, 7:48 pm, Thadeus Burgess <thade...@thadeusb.com> wrote: > > >>>>>>>> No. > > >>>>>>>> For dal.py to be accepted it has to work exactly like sql.py > > >>>>>>>> Therefore I cannot make ANY code changes if we want a new DAL. > > >>>>>>>> -Thadeus > > >>>>>>>> On Wed, Apr 7, 2010 at 5:31 PM, mdipierro <mdipie...@cs.depaul.edu> > >>>>>>>> wrote: > > >>>>>>>>> This > > >>>>>>>>> db.TableA.id_TableB.represent = lambda value: "%s" % > >>>>>>>>> db.TableB[value].name > > >>>>>>>>> should be > > >>>>>>>>> db.TableA.id_TableB.represent = lambda value: (db.TableB[value] or > >>>>>>>>> {}).get('name','anonymous') > > >>>>>>>>> On Apr 7, 1:36 pm, Thadeus Burgess <thade...@thadeusb.com> wrote: > > >>>>>>>>>> Traceback (most recent call last): > >>>>>>>>>> File "/home/tburgess/Applications/web2py/gluon/restricted.py", line > >>>>>>>>>> 173, in restricted > >>>>>>>>>> exec ccode in environment > >>>>>>>>>> File > > >>>>>>>>>> "/home/tburgess/Applications/web2py/applications/pms/views/default/index.html", > >>>>>>>>>> line 62, in <module> > >>>>>>>>>> <thead> > >>>>>>>>>> File > > >>>>>>>>>> "/home/tburgess/Applications/web2py/applications/pms/models/common.py", > >>>>>>>>>> line 197, in <lambda> > >>>>>>>>>> db.TableA.id_TableB.represent = lambda value: "%s" % > >>>>>>>>>> db.TableB[value].name > >>>>>>>>>> File "/home/tburgess/Applications/web2py/gluon/sql.py", line 2402, > >>>>>>>>>> in __getitem__ > >>>>>>>>>> return self._db(self.id == key).select().first() > >>>>>>>>>> File "/home/tburgess/Applications/web2py/gluon/sql.py", line 3276, > >>>>>>>>>> in > >>>>>>>>>> select > >>>>>>>>>> return self._db._adapter.select(self._query,*fields,**attributes) > >>>>>>>>>> File "/home/tburgess/Applications/web2py/gluon/sql.py", line 507, > >>>>>>>>>> in > >>>>>>>>>> select > >>>>>>>>>> query = self.SELECT(query,*fields, **attributes) > >>>>>>>>>> File "/home/tburgess/Applications/web2py/gluon/sql.py", line 433, > >>>>>>>>>> in > >>>>>>>>>> SELECT > >>>>>>>>>> for field in self.db[table]: > >>>>>>>>>> File "/home/tburgess/Applications/web2py/gluon/sql.py", line 2102, > >>>>>>>>>> in __getitem__ > >>>>>>>>>> return dict.__getitem__(self, str(key)) > >>>>>>>>>> KeyError: 'None' > > >>>>>>>>>> -Thadeus > > >>>>>>>>>> On Mon, Apr 5, 2010 at 6:00 PM, mdipierro <mdipie...@cs.depaul.edu> > >>>>>>>>>> wrote: > > >>>>>>>>>>> uploading fix. please check it. Thanks for testing this. > > >>>>>>>>>>> On Apr 5, 3:59 pm, Thadeus Burgess <thade...@thadeusb.com> wrote: > > >>>>>>>>>>>> Traceback (most recent call last): > >>>>>>>>>>>> File "/home/tburgess/Applications/web2py/gluon/restricted.py", > >>>>>>>>>>>> line > >>>>>>>>>>>> 173, in restricted > >>>>>>>>>>>> exec ccode in environment > >>>>>>>>>>>> File > > >>>>>>>>>>>> "/home/tburgess/Applications/web2py/applications/pms/controllers/default.py", > >>>>>>>>>>>> line 278, in <module> > >>>>>>>>>>>> File "/home/tburgess/Applications/web2py/gluon/globals.py", line > >>>>>>>>>>>> 96, > >>>>>>>>>>>> in <lambda> > >>>>>>>>>>>> self._caller = lambda f: f() > >>>>>>>>>>>> File > > >>>>>>>>>>>> "/home/tburgess/Applications/web2py/applications/pms/controllers/default.py", > >>>>>>>>>>>> line 76, in duplicates > >>>>>>>>>>>> orderby=db.potentials.A > >>>>>>>>>>>> File "/home/tburgess/Applications/web2py/gluon/sql.py", line > >>>>>>>>>>>> 3258, > >>>>>>>>>>>> in select > >>>>>>>>>>>> return > >>>>>>>>>>>> self._db._adapter.select(self._query,*fields,**attributes) > >>>>>>>>>>>> File "/home/tburgess/Applications/web2py/gluon/sql.py", line 512, > >>>>>>>>>>>> in select > >>>>>>>>>>>> return self.parse(rows,self._colnames) > >>>>>>>>>>>> File "/home/tburgess/Applications/web2py/gluon/sql.py", line 706, > >>>>>>>>>>>> in parse > >>>>>>>>>>>> (rid._table, rid._record) = (db[referee], None) > >>>>>>>>>>>> NameError: global name 'db' is not defined > > >>>>>>>>>>>> -Thadeus > > >>>>>>>>>>>> On Mon, Apr 5, 2010 at 3:01 PM, mdipierro > >>>>>>>>>>>> <mdipie...@cs.depaul.edu> > >>>>>>>>>>>> wrote: > > >>>>>>>>>>>>> try now > > >>>>>>>>>>>>> On Apr 5, 2:30 pm, Thadeus Burgess <thade...@thadeusb.com> > >>>>>>>>>>>>> wrote: > > >>>>>>>>>>>>>> Now I get this for reference field > > >>>>>>>>>>>>>> Traceback (most recent call last): > >>>>>>>>>>>>>> File "/home/tburgess/Applications/web2py/gluon/restricted.py", > >>>>>>>>>>>>>> line > >>>>>>>>>>>>>> 173, in restricted > >>>>>>>>>>>>>> exec ccode in environment > >>>>>>>>>>>>>> File > > ... > > read more » -- To unsubscribe, reply using "remove me" as the subject.