From 2b3213c06f953a962d6eb4f3d6afd1bae0163631 Mon Sep 17 00:00:00 2001 From: Frazer McLean Date: Tue, 24 Jan 2017 20:24:43 +0100 Subject: [PATCH 1/2] Reuse engine for get_table_names, use inspection instead of metadata. Resolves #74. --- records.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/records.py b/records.py index 7652c81..7141054 100644 --- a/records.py +++ b/records.py @@ -6,8 +6,7 @@ from inspect import isclass import tablib from docopt import docopt -from sqlalchemy import text, create_engine -from sqlalchemy.ext.declarative import declarative_base +from sqlalchemy import MetaData, create_engine, inspect, text DATABASE_URL = os.environ.get('DATABASE_URL') @@ -237,8 +236,10 @@ class Database(object): if not self.db_url: raise ValueError('You must provide a db_url.') + self._engine = create_engine(self.db_url, **kwargs) + # Connect to the database. - self.db = create_engine(self.db_url, **kwargs).connect() + self.db = self._engine.connect() self.open = True def close(self): @@ -259,11 +260,7 @@ class Database(object): """Returns a list of table names for the connected database.""" # Setup SQLAlchemy for Database inspection. - metadata = declarative_base().metadata - metadata.reflect(create_engine(self.db_url)) - - # Serve the table names. - return metadata.tables.keys() + return inspect(self._engine).get_table_names() def query(self, query, fetchall=False, **params): """Executes the given SQL query against the Database. Parameters From aa6587f6651645323fadb59ecab28225f85041e4 Mon Sep 17 00:00:00 2001 From: Frazer McLean Date: Tue, 24 Jan 2017 20:58:53 +0100 Subject: [PATCH 2/2] Remove unused import --- records.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/records.py b/records.py index 7141054..c2927c6 100644 --- a/records.py +++ b/records.py @@ -6,7 +6,7 @@ from inspect import isclass import tablib from docopt import docopt -from sqlalchemy import MetaData, create_engine, inspect, text +from sqlalchemy import create_engine, inspect, text DATABASE_URL = os.environ.get('DATABASE_URL')