Dear web2py-users,

I tried to create the database schema of my application by adding the
following code in db.py ; I am pasting the entire code, but in fact
the problem appears already at the first table definition, because te
ticket I get is the following:

Traceback (most recent call last):
  File "/home/mike/web2py/gluon/restricted.py", line 186, in
restricted
    exec ccode in environment
  File "/home/mike/web2py/applications/TurniPS/models/db.py", line 28,
in <module>
    Field('OrarioSett','integer',default='38'))
  File "/home/mike/web2py/gluon/sql.py", line 1359, in define_table
    t._create(migrate=migrate, fake_migrate=fake_migrate)
  File "/home/mike/web2py/gluon/sql.py", line 1845, in _create
    fake_migrate=fake_migrate)
  File "/home/mike/web2py/gluon/sql.py", line 1914, in _migrate
    self._db._execute(sub_query)
  File "/home/mike/web2py/gluon/sql.py", line 947, in <lambda>
    self._execute = lambda *a, **b: self._cursor.execute(*a, **b)
OperationalError: duplicate column name: lnott

This is the code, of course there is no duplicate column name...

... so - is this a silly mistake (missing bracket or apostrophe =
better use an editor instead of the web interface to develop)
... is it a crass error (young man, if you had read the manual on page
n, you would know that field definitions whatever)
... or what ? And how would it be best to go about debugging this sort
of error ?

Thank you for any suggestions. Here follows the code:

# Tabella 1 - dati personali dei medici

db.define_table('Medici',
 
Field('SiglaMedico','string',required=True,length=5,notnull=True,unique=True),
 
Field('NomeCognome','string',length=5,required=True,notnull=True,unique=True),
  Field('Email'),
  Field('LNott','boolean',default=True),
  Field('LPref','boolean',default=True),
  Field('LFest','boolean',default=True),
  Field('OrarioSett','integer',default='38'))

db.Medici.Email.requires=IS_EMAIL(error_message=T('Indirizzo email
invalido!'))
db.Medici.OrarioSett.requires=IS_INT_IN_RANGE(0,40)

# Tabella 2 - periodi di assenza dei medici

db.define_table('Assenze',
    Field('Medici_id',db.Medici),
    Field('Inizio','datetime'),
    Field('Fine','datetime'),
    Field('PesoMotivazione','integer'),
    Field('Motivazione','string'))

db.Assenze.Inizio.requires=IS_DATETIME()
db.Assenze.Fine.requires=IS_DATETIME()
db.Assenze.PesoMotivazione.requires=IS_INT_IN_RANGE(0,10)

# Tabella 3 - tipi di servizio

db.define_table('Servizi',
 
Field('SiglaServizio','string',length=5,required=True,notnull=True,unique=True),
    Field('TipoServizio','string'))

# Tabella 4 - tipi di turno

db.define_table('Turni',
 
Field('SiglaTurno','string',length=5,required=True,notnull=True,unique=True),
    Field('OraInizio','time'),
    Field('OraFine','time'),
    Field('DescizioneTurno','string'))

db.Turni.OraInizio.requires=IS_TIME()
db.Turni.OraFine.requires=IS_TIME()

# Tabella 5 - associamo i diversi tipi di turno a diversi tipi di
servizio

db.define_table('ServiziTurno',
    Field('Servizi_id',db.Servizi),
    Field('Turni_id',db.Turni))

# Tabella 6 - associamo ogni medico a diversi tipi di servizio

db.define_table('ServiziMedici',
    Field('Servizi_id',db.Servizi),
    Field('Medici_id',db.Medici),
    Field('Preferenza','integer'))

db.ServiziMedici.Preferenza.requires=IS_INT_IN_RANGE(0,10)

# Tabella 7 - infine il nostro schema turni !

db.define_table('SchemaTurni',
    Field('Data','date'),
    Field('Turni_id',db.Turni),
    Field('Medici_id',db.Medici),
    Field('Gettone','boolean',default=False),
    Field('OreServizo','integer'),
    Field('Festivo','boolean'),
    Field('Preferenza','integer'))

db.SchemaTurni.Data.requires=IS_DATE()
db.SchemaTurni.OreServizio.requires=IS_INT_IN_RANGE(0,12)
db.SchemaTurni.Preferenza.requires=IS_INT_IN_RANGE(0,10)

Reply via email to