How to lazily declare a database connection?
If you had read the docs you would have found:

* http://docs.peewee-orm.com/en/latest/peewee/database.html#run-time-database-configuration
* http://docs.peewee-orm.com/en/latest/peewee/database.html#dynamically-defining-a-database
* http://docs.peewee-orm.com/en/latest/peewee/database.html#setting-the-database-at-run-time Sorry for the noise.
The idiom

```python
from peewee import *

db = ...

class BaseModel(Model):
    class Meta:
        database = db
```

found in the guide, docs, etc. suggests that we have to either write the db credentials on the source code or read the credentials from environment on the root of the module (i.e. executed when we `import` the module).

However, database connections, and in particular secrets, are often only available after importing a module. Two examples:

* when the secrets are stored on a secret vault and we need to query said vault to retrieve the DB user/password, which we may want to read asynchronously, or every X days if the secret rotates.
* in CLI applications, where the secret may be inputted by the user as a CLI parameter or terminal input

Is there a "standard" or recommended idiom for these use cases? Ideally a way whereby we do not have to write something like

```python
def get_models(username, password):
    db = ... username, password

    class BaseModel(Model):
        class Meta:
            database = db
```

and then import each of the models into the module (or something).

More generally, is there a way to decouple database-specific properties from the creation of the ORM models?
