>
> 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