If you install peewee using setup.py install
, pwiz will be installed as a “script” and you can just run:
This will print a bunch of models to standard output. So you can do this:
python -m pwiz -e postgresql my_postgres_db > mymodels.py
python # <-- fire up an interactive shell
The following are valid parameters for the engine
(-e
):
- sqlite
- mysql
- postgresql
pwiz examples
Examples of introspecting various databases:
# Introspect a Sqlite database.
python -m pwiz -e sqlite path/to/sqlite_database.db
# Introspect a MySQL database, logging in as root:secret.
python -m pwiz -e mysql -u root -P secret mysql_db_name
python -m pwiz -e postgres -u postgres -H 10.1.0.3 pg_db_name
Produces the following output:
database = SqliteDatabase('example.db', **{})
class UnknownField(object):
def __init__(self, *_, **__): pass
class BaseModel(Model):
class Meta:
database = database
class User(BaseModel):
table_name = 'user'
class Tweet(BaseModel):
content = TextField()
timestamp = DateTimeField()
user = ForeignKeyField(column_name='user_id', field='id', model=User)
class Meta:
table_name = 'tweet'
Observations:
- The foreign-key
Tweet.user_id
is detected and mapped correctly. - The
User.username
UNIQUE constraint is detected. - All the parameters of the
ForeignKeyField
are explicitly declared, even though they follow the conventions Peewee uses by default.
The UnknownField
is a placeholder that is used in the event your schema contains a column declaration that Peewee doesn’t know how to map to a field class.