I do give it a name. In this case the name is 'current_R'. I just typed the line of code that caused the error to help you narrow it down, I am sorry I did not copy/paste instead of quickly typing it. The code is correct, I don't edit anything when I test it on dal.py
By the way, the trackback says "sql.py" but it is really a softlink to dal.py. -Thadeus On Fri, Apr 9, 2010 at 2:04 PM, mdipierro <mdipie...@cs.depaul.edu> wrote: > 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. >