On Thursday, May 19, 2011 11:48:07 PM UTC-4, james c. wrote: 
>
> The tables are created by web2py 
> with a 31 digit hex number appended to the generic name + user id.

 
The table names in the actual database are simply the names you define in 
your db.define_table() definitions. If you want to drop a table, just use 
the table name itself (without any 31 digit hex number):
 
this_current_view = 'current_view_' + str(auth.user_id) 
db[this_current_view].drop() 
 
 
The files with the 31 digit hex prefixes are not the database tables 
themselves -- they are web2py migration files that store migration data for 
the tables. The hex prefix is a hash of the db connection string. Looking at 
the DAL code, you should be able to figure out the prefix using this code:
 
 
import hashlib
hex_prefix = '%s_%s.table' % (hashlib.md5(db._uri).hexdigest(), tablename)
 
 
However, the migration file names are simply an automatic default generated 
by web2py. As an alternative, you can specify your own migration file name 
for each table using the 'migrate' argument to define_table(). For example:
 
db.define_table(current_view_db, current_view_template, migrate='%s.table' % 
current_view_db)
 
 
Note, when you drop a table using .drop(), it drops it from the database, 
but I don't think it will delete the migration file, so you'll have to add 
some code to delete the migration file yourself.
 
Anthony
 

Reply via email to