From 354a51bf9888aaaa0d4b51d7dec8305941b1045a Mon Sep 17 00:00:00 2001 From: Friedrich Lindenberg Date: Sat, 11 Jan 2020 16:46:04 +0100 Subject: [PATCH] Add support for database views, fixes #235, fixes #267. --- dataset/database.py | 12 +++++++++++- dataset/table.py | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/dataset/database.py b/dataset/database.py index 41fa93e..c19b3bd 100644 --- a/dataset/database.py +++ b/dataset/database.py @@ -145,10 +145,20 @@ class Database(object): """Get a listing of all tables that exist in the database.""" return self.inspect.get_table_names(schema=self.schema) + @property + def views(self): + """Get a listing of all views that exist in the database.""" + return self.inspect.get_view_names(schema=self.schema) + def __contains__(self, table_name): """Check if the given table name exists in the database.""" try: - return normalize_table_name(table_name) in self.tables + table_name = normalize_table_name(table_name) + if table_name in self.tables: + return True + if table_name in self.views: + return True + return False except ValueError: return False diff --git a/dataset/table.py b/dataset/table.py index 9d7ade2..7371026 100644 --- a/dataset/table.py +++ b/dataset/table.py @@ -288,7 +288,7 @@ class Table(object): schema=self.db.schema, autoload=True) except NoSuchTableError: - pass + self._table = None def _threading_warn(self): if self.db.in_transaction and threading.active_count() > 1: