Perhaps DB connection URI retrieval in playhouse.flask_utils.FlaskDB can be deferred (init_app) until db_connect
Well, you can always just initialize your FlaskDB object by specifying `app=None`. Then when you're ready, you can call `init_app()` on it. That is the standard pattern for doing plugins and plugin factories with Flask.

For anything more than that you'll probably want to look at the following docs:
- [Run-time database configuration](http://docs.peewee-orm.com/en/latest/peewee/database.html#run-time-database-configuration)
- [Dynamically defining a database](http://docs.peewee-orm.com/en/latest/peewee/database.html#dynamically-defining-a-database)

I run into a configuration problem doing testing. FlaskDB ignores Flask configuration changes made in **setUp**, eg, `app.config["DATABASE"] = ...`. FlaskDB uses the "global" (original application configurations). I'd done testing **flask-sqlalchemy** and it has lazy DB connection initialization. Perhaps DB connection URI retrieval and connecton initialization in playhouse.flask_utils.FlaskDB can  be deferred (init_app) until db_connect.

A test for the "expected" behaviour in the context of a test would be:

``` python
#!/usr/bin/env python                                                     
# -*- coding: utf-8 -*-                                                   

import unittest                                                           
from flask import Flask                                                   
from playhouse.flask_utils import FlaskDB
import re               

app = Flask(__name__)                                                     
app.config["DATABASE"] = "sqlite:///app.db"  ## this URI shouldn't be used
db = FlaskDB(app)                                                         

class Atable(db.Model):                                                   
    pass                                                                  

@app.route('/')
def index():                                                              
    return "Configuration DATABASE: %s\n\nModel DATABASE: %s" \           
            % (app.config["DATABASE"], Atable._meta.database.database)    


class UserTest(unittest.TestCase):                                        

    def setUp(self):                                                      
        app.config["DATABASE"] = "sqlite:///test.db"                      
        self.app = app.test_client()                                      

    def test_app_db_settings(self):                                           
        rv = self.app.get('/')                                            
        assert "Model DATABASE: test.db" in str(rv.data)                  
        assert "Model DATABASE: app.db" not in str(rv.data)

       app_db_file, model_db_file = re.findall("\w*\.db", str(rv.data), re.M)          
       assert app_db_file == model_db_file

if __name__ == "__main__":                                                
    unittest.main()                                                       
```
