From a24d1b3ef5221481944370e3a9a0e3d651a9cefe Mon Sep 17 00:00:00 2001 From: Davte Date: Mon, 8 Jul 2019 15:43:46 +0200 Subject: [PATCH] Method to create views in database added --- davtelepot/database.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/davtelepot/database.py b/davtelepot/database.py index 6277f97..9aebb46 100644 --- a/davtelepot/database.py +++ b/davtelepot/database.py @@ -49,3 +49,25 @@ class ObjectWithDatabase(object): def db(self): """Return the dataset.Database instance related to `self`.""" return self._database + + def create_views(self, views, overwrite=False): + """Take a list of `views` and add them to bot database. + + Overwrite existing views if `overwrite` is set to True. + Each element of this list should have + - a `name` field + - a `query field` + """ + with self.db as db: + for view in views: + try: + if overwrite: + db.query( + f"DROP VIEW IF EXISTS {view['name']}" + ) + db.query( + f"CREATE VIEW IF NOT EXISTS {view['name']}" + f"AS {view['query']}" + ) + except Exception as e: + logging.error(f"{e}")