mind that sqlite does not enforce field types (web2py does). This is a problem if you have already inserted records in the previous definition and then you changed it. In this case I suggest delete everything in the folder databases/.
Massimo On Aug 11, 10:41 am, Don Lee <sam...@gmail.com> wrote: > Thanks, that got rid of my problem with a false value for the boolean. > > ==================================================================== > # coding: utf8 > # define a SQLite database > database=SQLDB("sqlite://database.db") > > # create a vendor table > database.define_table('vendor', > database.Field('name', 'string', length=64, unique=True), > database.Field('alias', 'string', length=16, unique=True), > database.Field('url', 'string', length=128, unique=True), > database.Field('logo', 'upload'), > database.Field('active', 'boolean') > ) > > database.vendor.name.requires=[IS_NOT_EMPTY(),IS_NOT_IN_DB(database, > database.vendor.name)] > database.vendor.alias.requires=[IS_NOT_EMPTY(),IS_NOT_IN_DB(database, > database.vendor.name),IS_NOT_IN_DB(database, database.vendor.alias)] > database.vendor.url.requires=[IS_NOT_EMPTY()] > database.vendor.logo.requires=[IS_NOT_EMPTY()] > database.vendor.active.requires=[IS_NOT_EMPTY()] > > database.define_table('distro', > database.Field('vendor_id', database.vendor), > database.Field('name', 'string', length=64, unique=True), > database.Field('alias', 'string', length=16, unique=True), > database.Field('active', 'boolean') > ) > > database.distro.vendor_id.requires=IS_IN_DB(database,database.vendor.id > ,'%(name)s') > database.distro.name.requires=[IS_NOT_EMPTY()] > database.distro.alias.requires=[IS_NOT_EMPTY(),IS_NOT_IN_DB(database,database.distro.alias)] > database.distro.active.requires=[IS_NOT_EMPTY()] > > database.define_table('release', > database.Field('distro_id', database.distro), > database.Field('version', 'string', length=16, unique=True), > database.Field('alias', 'string', length=16, unique=True), > database.Field('active', 'boolean', default=True) > ) > > database.release.distro_id.requires=IS_IN_DB(database,database.distro.id > ,'%(name)s') > database.release.version.requires=[IS_NOT_EMPTY()] > database.release.alias.requires=[IS_NOT_EMPTY(),IS_NOT_IN_DB(database,database.release.alias)] > ==================================================================== > > My the tables are still not being defined as i would expect. > > ==================================================================== > > timestamp: 2009-08-10T11:15:24.393714 > CREATE TABLE vendor( > id INTEGER PRIMARY KEY AUTOINCREMENT, > name CHAR(32), > alias CHAR(32), > url CHAR(32), > logo CHAR(32), > active CHAR(32) > ); > success! > timestamp: 2009-08-10T11:15:24.411343 > CREATE TABLE distro( > id INTEGER PRIMARY KEY AUTOINCREMENT, > vendor_id CHAR(32), > name CHAR(32), > alias CHAR(32), > active CHAR(32) > ); > success! > timestamp: 2009-08-10T11:15:24.423518 > CREATE TABLE release( > id INTEGER PRIMARY KEY AUTOINCREMENT, > distro_id CHAR(32), > version CHAR(32), > alias CHAR(32), > active CHAR(32) > ); > success! > ==================================================================== > > On Tue, Aug 11, 2009 at 10:00 AM, Don <sam...@gmail.com> wrote: > > > I have defined my model. > > > ==================================================== > > # coding: utf8 > > # define a SQLite database > > database=SQLDB("sqlite://database.db") > > > # create a vendor table > > database.define_table('vendor', > > database.Field('name'), > > database.Field('alias'), > > database.Field('url'), > > database.Field('logo'), > > database.Field('active') > > ) > > > database.vendor.name.type='string' > > database.vendor.name.length=64 > > database.vendor.name.unique=True > > database.vendor.name.requires=[IS_NOT_EMPTY(),IS_NOT_IN_DB(database, > > database.vendor.name)] > > > database.vendor.alias.type='string' > > database.vendor.alias.length=16 > > database.vendor.alias.unique=True > > database.vendor.alias.requires=[IS_NOT_EMPTY(),IS_NOT_IN_DB(database, > > database.vendor.name),IS_NOT_IN_DB(database, database.vendor.alias)] > > > database.vendor.url.type='string' > > database.vendor.url.length=128 > > database.vendor.url.requires=[IS_NOT_EMPTY()] > > > database.vendor.logo.type='upload' > > database.vendor.logo.requires=[IS_NOT_EMPTY()] > > > database.vendor.active.type='boolean' > > database.vendor.active.requires=[IS_NOT_EMPTY()] > > > database.define_table('distro', > > database.Field('vendor_id'), > > database.Field('name'), > > database.Field('alias'), > > database.Field('active') > > ) > > > database.distro.vendor_id.type='database.vendor' > > database.distro.vendor_id.requires=IS_IN_DB > > (database,database.vendor.id,'%(name)s') > > > database.distro.name.type='string' > > database.distro.name.length=64 > > database.distro.name.unique=True > > database.distro.name.requires=[IS_NOT_EMPTY()] > > > database.distro.alias.type='string' > > database.distro.alias.length=16 > > database.distro.alias.unique=True > > database.distro.alias.requires=[IS_NOT_EMPTY(),IS_NOT_IN_DB > > (database,database.distro.alias)] > > > database.distro.active.type='boolean' > > database.distro.active.requires=[IS_NOT_EMPTY()] > > > database.define_table('release', > > database.Field('distro_id'), > > database.Field('version'), > > database.Field('alias'), > > database.Field('active') > > ) > > > database.release.distro_id.type='database.distro' > > database.release.distro_id.requires=IS_IN_DB > > (database,database.distro.id,'%(name)s') > > > database.release.version.type='string' > > database.release.version.length=16 > > database.release.version.unique=True > > database.release.version.requires=[IS_NOT_EMPTY()] > > > database.release.alias.type='string' > > database.release.alias.length=16 > > database.release.alias.unique=True > > database.release.alias.requires=[IS_NOT_EMPTY(),IS_NOT_IN_DB > > (database,database.release.alias)] > > > database.release.active.type='boolean' > > database.release.active.default=True > > ========================================= > > > When I look at sql.log I see > > > ========================================= > > timestamp: 2009-08-10T11:15:24.393714 > > CREATE TABLE vendor( > > id INTEGER PRIMARY KEY AUTOINCREMENT, > > name CHAR(32), > > alias CHAR(32), > > url CHAR(32), > > logo CHAR(32), > > active CHAR(32) > > ); > > success! > > timestamp: 2009-08-10T11:15:24.411343 > > CREATE TABLE distro( > > id INTEGER PRIMARY KEY AUTOINCREMENT, > > vendor_id CHAR(32), > > name CHAR(32), > > alias CHAR(32), > > active CHAR(32) > > ); > > success! > > timestamp: 2009-08-10T11:15:24.423518 > > CREATE TABLE release( > > id INTEGER PRIMARY KEY AUTOINCREMENT, > > distro_id CHAR(32), > > version CHAR(32), > > alias CHAR(32), > > active CHAR(32) > > ); > > success! > > ========================================= > > > Is it normal for my specifications to be ignored? Also, via the > > database administration page, I can set the active field of a record > > to "True" but not "False". If I try to change something to "False" I > > get "invalid length!". > > > What am I doing wrong? --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "web2py-users" group. To post to this group, send email to web2py@googlegroups.com To unsubscribe from this group, send email to web2py+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/web2py?hl=en -~----------~----~----~----~------~----~------~--~---