> > I don't really understand the point of auto_import or what it does exactly > but it does *NOT* read the database. Per the book it reads the metadata in > the .table files (which your code is deleting > with os.remove(dbfolder+"/test.table")).
Correct, auto_import looks at the *.table files in the /databases folder, not directly at the database. However, although he is deleting the 'test.table' file, it should then get re-created with the subsequent define_table call. The problem is that auto_import=True doesn't work when you give a custom name to the .table metadata file. Instead, you have to let web2py automatically generate the default .table file names, which is what auto_import will look for. So, the following should work: db1 = DAL('sqlite://storage.sqlite', folder=dbfolder, auto_import=True) print(db1.tables) db1.executesql("DROP TABLE IF EXISTS test;") print(db1._timings) try: os.remove(dbfolder + '/%s_test.table' % db._uri_hash) except: pass db1.define_table('test', Field('testfield'), migrate=True) db1.commit() print(db1.tables) db2 = DAL('sqlite://storage.sqlite', folder=dbfolder, auto_import=True) print(db2.tables) Anthony