summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Bank <sebastian.bank@uni-leipzig.de>2016-03-17 15:51:06 +0100
committerSebastian Bank <sebastian.bank@uni-leipzig.de>2016-03-17 15:51:06 +0100
commitce7632d6f848d8442e810e5ae5faf2845b57930a (patch)
treec2e17d2eda7c2125743c51dee0f9df49a5682a51
parentcf8f819c434ba135d15b9eb0ea82a5409890a7fd (diff)
downloadsqlalchemy-ce7632d6f848d8442e810e5ae5faf2845b57930a.tar.gz
refactor table_names methods dropping sql string interpolation and subselect
-rw-r--r--lib/sqlalchemy/dialects/postgresql/base.py40
1 files changed, 12 insertions, 28 deletions
diff --git a/lib/sqlalchemy/dialects/postgresql/base.py b/lib/sqlalchemy/dialects/postgresql/base.py
index 887940200..c66a3f50b 100644
--- a/lib/sqlalchemy/dialects/postgresql/base.py
+++ b/lib/sqlalchemy/dialects/postgresql/base.py
@@ -1922,39 +1922,23 @@ class PGDialect(default.DefaultDialect):
@reflection.cache
def get_table_names(self, connection, schema=None, **kw):
- if schema is not None:
- current_schema = schema
- else:
- current_schema = self.default_schema_name
-
result = connection.execute(
- sql.text("SELECT relname FROM pg_class c "
- "WHERE relkind = 'r' "
- "AND '%s' = (select nspname from pg_namespace n "
- "where n.oid = c.relnamespace) " %
- current_schema,
- typemap={'relname': sqltypes.Unicode}
- )
- )
- return [row[0] for row in result]
+ sql.text("SELECT c.relname FROM pg_class c "
+ "JOIN pg_namespace n ON n.oid = c.relnamespace "
+ "WHERE n.nspname = :schema AND c.relkind = 'r'"
+ ).columns(relname=sqltypes.Unicode),
+ schema=schema if schema is not None else self.default_schema_name)
+ return [name for name, in result]
@reflection.cache
def _get_foreign_table_names(self, connection, schema=None, **kw):
- if schema is not None:
- current_schema = schema
- else:
- current_schema = self.default_schema_name
-
result = connection.execute(
- sql.text("SELECT relname FROM pg_class c "
- "WHERE relkind = 'f' "
- "AND '%s' = (select nspname from pg_namespace n "
- "where n.oid = c.relnamespace) " %
- current_schema,
- typemap={'relname': sqltypes.Unicode}
- )
- )
- return [row[0] for row in result]
+ sql.text("SELECT c.relname FROM pg_class c "
+ "JOIN pg_namespace n ON n.oid = c.relnamespace "
+ "WHERE n.nspname = :schema AND c.relkind = 'f'"
+ ).columns(relname=sqltypes.Unicode),
+ schema=schema if schema is not None else self.default_schema_name)
+ return [name for name, in result]
@reflection.cache
def get_view_names(self, connection, schema=None, include=('plain', 'materialized'), **kw):