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?
>
>

Reply via email to