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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> wrote:
>
> > > > Probably just being unhappy with the case :)
>
> > > > tecnoGradua != tecnogradua
>
> > > > Mart :)
>
> > > > Field("tecnoGradua", 'string',
>
> > > > On Jan 8, 12:57 am, drayco <[email protected]> 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?