diff --git a/server/__main__.py b/server/__main__.py index e9bd537..8f2404f 100644 --- a/server/__main__.py +++ b/server/__main__.py @@ -14,6 +14,8 @@ from server.models import db, Report def init(): db.connect() db.create_tables([Report]) + if not db.is_closed(): + db.close() # Use DateAwareJSONEncoder to dump JSON strings # From http://stackoverflow.com/questions/21282040/bottle-framework-how-to-return-datetime-in-json-response#comment55718456_21282666. pylint: disable=locally-disabled,line-too-long diff --git a/server/models.py b/server/models.py index c313b58..d41b4a2 100644 --- a/server/models.py +++ b/server/models.py @@ -6,6 +6,7 @@ Models and database definition import os import arrow +import bottle import peewee from playhouse.db_url import connect from playhouse.shortcuts import model_to_dict @@ -13,6 +14,17 @@ from playhouse.shortcuts import model_to_dict db = connect(os.environ.get('DATABASE', 'sqlite:///reports.db')) +@bottle.hook('before_request') +def _connect_db(): + db.connect() + + +@bottle.hook('after_request') +def _close_db(): + if not db.is_closed(): + db.close() + + class BaseModel(peewee.Model): """ Common base class for all models