so that tg-admin runs it once but not on every import the model module?

Do not really know, but maybe this can help:

sql -- wrapper for sqlobject-admin

SQLObject includes a utility called sqlobject-admin. sqlobject-admin includes a number of handy features, including a command to create a database and another for recording a checkpoint to keep track of database changes.

Running tg-admin sql is equivalent to sqlobject-admin, but the tg-admin sql command will pass a command line parameter specifying the database to use (as pulled from the configuration file). sqlobject-admin also automatically knows where your model objects are stored, because of metadata put into Project.egg-info/sqlobject.txt when you run quickstart.

The tg-admin sql wrapper makes it possible to create your database just by running tg-admin sql create.

Beyond these default parameters, tg-admin sql just wraps sqlobject-admin. For further information about the commands and options available there, look at the documentation for sqlobject-admin itself.