diff options
Diffstat (limited to 'lib/sqlalchemy/engine/base.py')
-rw-r--r-- | lib/sqlalchemy/engine/base.py | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/lib/sqlalchemy/engine/base.py b/lib/sqlalchemy/engine/base.py index 5e6c74c91..642eeac62 100644 --- a/lib/sqlalchemy/engine/base.py +++ b/lib/sqlalchemy/engine/base.py @@ -1028,8 +1028,21 @@ class Engine(Connectable): return Connection(self, close_with_result=close_with_result, **kwargs) - def table_names(self, schema=None): - conn = self.contextual_connect() + def table_names(self, schema=None, connection=None): + """Return a list of all table names available in the database. + + schema: + Optional, retrieve names from a non-default schema. + + connection: + Optional, use a specified connection. Default is the + ``contextual_connect`` for this ``Engine``. + """ + + if connection is None: + conn = self.contextual_connect() + else: + conn = connection if not schema: try: schema = self.dialect.get_default_schema_name(conn) @@ -1038,7 +1051,8 @@ class Engine(Connectable): try: return self.dialect.table_names(conn, schema) finally: - conn.close() + if connection is None: + conn.close() def reflecttable(self, table, connection=None, include_columns=None): """Given a Table object, reflects its columns and properties from the database.""" |