>
> db1 = DAL('sqlite://storage.sqlite', folder='c:/web2py/applications/ 
> crm/databases', auto_import=True) 
> db2 = DAL('mysql://root@localhost/opencart', auto_import=True) 
> print(db1.tables) 
> print(db2.tables) 
> a=db2.executesql("show tables") 
> print(a) 
>
> This lists the tables for sqlite database; and lists the tables for 
> mysql with the "show tables" command. However it shows an empty list 
> for the mysql db.tables.
>

auto_import works by reading the *.table files in the /databases folder of 
the web2py app that defines the models for the database in question. Has 
the MySQL database been accessed by another web2py app that explicitly 
defined models for it? If not, auto_import won't provide any information 
about what's in the database. auto_import does not inspect the database 
itself -- it is simply a way to allow one app to access the database of 
another app without having to repeat the original app's model definitions.

If the MySQL database is a legacy database and you want to automatically 
build models for it by directly inspecting the database, you can try this 
script: 
http://code.google.com/p/web2py/source/browse/scripts/extract_mysql_models.py. 
There's also a newer (and I think more comprehensive) script originally 
designed to read Postgres db's, but will probably work for MySQL with 
minimal tweaking (see the 
docstring): 
http://code.google.com/p/web2py/source/browse/scripts/extract_pgsql_models.py.

Anthony

Reply via email to