Hi, Now my old application is work's with trunk. Thank's a lot to fix it.
Hi, Now one of my old application is work's with trunk version. Thanks a lot to fix it. However I obtain the same issue with mysql and legacy database, this is other old application, this is the issue Traceback (most recent call last): File "/home/drayco/web2py/gluon/restricted.py", line 188, in restricted exec ccode in environment File "/home/drayco/web2py/applications/iscada/models/cfedb.py", line 16, in <module> migrate = False) File "/home/drayco/web2py/gluon/dal.py", line 3457, in define_table sequence_name=sequence_name)) File "/home/drayco/web2py/gluon/dal.py", line 3741, in __init__ "primarykey must be a list of fields from table '%s " % tablename SyntaxError: primarykey must be a list of fields from table 'med_dnpmst_4 http://groups.google.com/group/web2py/browse_thread/thread/72e91e281e0610d8/099e21f098ae8501#099e21f098ae8501 How can I avoid this situation? Thank's in advance On Jan 18, 6:17 pm, drayco <antrod...@gmail.com> wrote: > Hi, When we have available that change? > > And Can you give us a little example? > > Because, I'm testing my application on the trunk version and I keep > getting the same error. > > On Jan 8, 4:40 pm, Massimo Di Pierro <massimo.dipie...@gmail.com> > wrote: > > > We should have a flag to change this behavior DAL(...,lowercase=True). > > I would take a patch. > > > On Jan 8, 2:58 pm, Thadeus Burgess <thade...@thadeusb.com> wrote: > > > > All I know is that tables are issued as lowercase, but you can still > > > access > > > your table as an uppercase attribute. > > > > There is an inconsistency in the DAL somewhere because of this... > > > Somewhere > > > it is forgetting to convert to lower case. I don't know why converting > > > table > > > names to lower case is forced in web2py and I disagree with it. > > > > for example: > > > > db = DAL() > > > db.define_table('TableA', Field('Superman')) > > > # CREATE TABLE tablea WITH FIELDS superman > > > db(db.TableA.Superman == "clark").select().first().Superman > > > # SELECT * FROM tablea WHERE superman="clark" > > > > -- > > > Thadeus > > > > On Sat, Jan 8, 2011 at 1:17 AM, mart <msenecal...@gmail.com> wrote: > > > > really? I didn't know, thanks for pointing that out... > > > > > just out of curiosity.... > > > > > in > > > > > in __getitem__ > > > > return dict.__getitem__(self, str(key)) > > > > KeyError: 'tecnogradua' > > > > > don't the attribute lookups get done by python ultimately? Just > > > > trying to understand... > > > > how could this have worked if doing x.__getitem__ ? Even if dal does a > > > > string.lower() or something, once the table is named and created, > > > > would something (outside of migrate) not catch that error and set off > > > > the alarm even before any change need to happen? > > > > > Thanks, > > > > Mart :) > > > > > On Jan 8, 1:44 am, Thadeus Burgess <thade...@thadeusb.com> wrote: > > > > > I can also confirm this is a bug with the new DAL. > > > > > > It is only caused when using upper case characters in the table or > > > > > field > > > > > names. It seems that web2py converts all of the tablenames to lower > > > > > case > > > > > when issuing the SQL (so your actual tables are lower regardless of > > > > > what > > > > you > > > > > specify in the python). There is something in the migrations that > > > > > cause > > > > this > > > > > to come up, because it will work just fine one run and crash on > > > > > another > > > > run > > > > > after changing some unrelated tables. > > > > > > I don't think the DAL should force the tables to lowercase. > > > > > > -- > > > > > Thadeus > > > > > > On Sat, Jan 8, 2011 at 12:38 AM, mart <msenecal...@gmail.com> wrote: > > > > > > no, this is python... > > > > > > > not sure how it could have worked before, but the key (technogradua) > > > > > > in .keys() is not being picked up... dal is simply pointing that out > > > > > > with the exception being thrown. I did notice when I made the switch > > > > > > that a few more of my mistakes got picked up (or it could be that I > > > > > > forgot that I changed something), but regardless... since switching > > > > > > to > > > > > > the latest DAL release and fixing my mistakes that it quickly picked > > > > > > up, I have had no problems (except those that I cause). I would > > > > > > simply > > > > > > take those exceptions for cash, change the case and enjoy one less > > > > > > exception ;) > > > > > > > Mart :) > > > > > > > On Jan 8, 1:19 am, drayco <antrod...@gmail.com> wrote: > > > > > > > Ok, I understand your point. > > > > > > > > But this is a issue of DAL or what? > > > > > > > > because I only update web2py to trunk version > > > > > > > > On Jan 8, 12:15 am, mart <msenecal...@gmail.com> wrote: > > > > > > > > > Probably just being unhappy with the case :) > > > > > > > > > tecnoGradua != tecnogradua > > > > > > > > > Mart :) > > > > > > > > > Field("tecnoGradua", 'string', > > > > > > > > > On Jan 8, 12:57 am, drayco <antrod...@gmail.com> wrote: > > > > > > > > > > Hi, this code works with web2py 1.89.5 with mysql > > > > > > > > > > but with web2py in trunk and mysql it dosent works. > > > > > > > > > > db.define_table("lentes", > > > > > > > > > audit, > > > > > > > > > Field("tecnoGradua", 'string', > > > > > requires=IS_IN_SET(['MONOFOCAL','BIFOCAL','MULTIFOCAL']),label="Num. > > > > > > > > > de Graduaciones"), > > > > > > > > > Field("material", "string", requires=IS_IN_SET(['MICA > > > > > > CR-39','ORMA > > > > > > > > > 1.50','HIGH INDEX','THIN & LITE 1.67 > > > > > > > > > ASFÉRICA','POLICARBONATO','CRISTAL'])), > > > > > > > > > Field("tipo", > > > > > > > > > "string",requires=IS_NULL_OR(IS_IN_SET(['FLAT > > > > > > > > > TOP','BLEND O YOUNGER','PROGRESIVOS','PROGRESIVOS VARILUX > > > > > > > > > COMFORT > > > > > > > > > NE','PROGRESIVOS COMPACTOS','PROGRESIVOS VARILUX COMFORT > > > > SHORT']))), > > > > > > > > > Field("tecnoVisual", > > > > > 'string',requires=IS_NULL_OR(IS_IN_SET(['PHOTOGRAY','TRANSITIONS'])),label= > > > > > > "Tecnologia > > > > > > > > > de Visualización"), > > > > > > > > > Field("tratamiento", > > > > "string",requires=IS_NULL_OR(IS_IN_SET(['CON > > > > > > > > > ANTIRREFLEJANTE','ESPEJEADO','CRIZAL FORTE','CRIZAL > > > > > > > > > ALIZÉ']))), > > > > > > > > > Field('limitup','double', writable=False, readable=False), > > > > > > > > > Field('limitdown','double', writable=False, > > > > > > > > > readable=False), > > > > > > > > > Field("promo", "double", > > > > requires=[IS_NOT_EMPTY(error_message='No > > > > > > > > > puede estar > > > > > > > > > vacio'),IS_FLOAT_IN_RANGE(0,10000,error_message='Debe > > > > ser > > > > > > > > > un numero positivo entre 0 y 10000')], label='Precio de > > > > Promoción'), > > > > > > > > > Field("precio", "double", writable=False, readable=False), > > > > > > > > > Field("costo", "double", writable=False, readable=False), > > > > > > > > > Field("observaciones","text", writable=False, > > > > readable=False)) > > > > > > > > > > This is the traceback > > > > > > > > > > Traceback (most recent call last): > > > > > > > > > File "/home/drayco/web2py/gluon/restricted.py", line 188, in > > > > > > > > > restricted > > > > > > > > > exec ccode in environment > > > > > > > > > File "/home/drayco/web2py/applications/movil/models/db.py", > > > > line > > > > > > > > > 272, in <module> > > > > > > > > > Field("observaciones","text", writable=False, > > > > readable=False)) > > > > > > > > > File "/home/drayco/web2py/gluon/dal.py", line 3441, in > > > > define_table > > > > > > > > > polymodel=polymodel) > > > > > > > > > File "/home/drayco/web2py/gluon/dal.py", line 551, in > > > > create_table > > > > > > > > > fake_migrate=fake_migrate) > > > > > > > > > File "/home/drayco/web2py/gluon/dal.py", line 595, in > > > > migrate_table > > > > > > > > > and not isinstance(table[key].type, SQLCustomType) \ > > > > > > > > > File "/home/drayco/web2py/gluon/dal.py", line 3778, in > > > > __getitem__ > > > > > > > > > return dict.__getitem__(self, str(key)) > > > > > > > > > KeyError: 'tecnogradua' > > > > > > > > > > Can I need to change something? > >