summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/databases
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/databases')
-rw-r--r--lib/sqlalchemy/databases/firebird.py4
-rw-r--r--lib/sqlalchemy/databases/information_schema.py5
-rw-r--r--lib/sqlalchemy/databases/informix.py4
-rw-r--r--lib/sqlalchemy/databases/mssql.py8
-rw-r--r--lib/sqlalchemy/databases/oracle.py5
-rw-r--r--lib/sqlalchemy/databases/postgres.py3
-rw-r--r--lib/sqlalchemy/databases/sqlite.py4
7 files changed, 33 insertions, 0 deletions
diff --git a/lib/sqlalchemy/databases/firebird.py b/lib/sqlalchemy/databases/firebird.py
index 07f07644f..065894437 100644
--- a/lib/sqlalchemy/databases/firebird.py
+++ b/lib/sqlalchemy/databases/firebird.py
@@ -152,6 +152,10 @@ class FBDialect(ansisql.ANSIDialect):
def max_identifier_length(self):
return 31
+
+ def table_names(self, connection, schema):
+ s = "SELECT R.RDB$RELATION_NAME FROM RDB$RELATIONS R"
+ return [row[0] for row in connection.execute(s)]
def has_table(self, connection, table_name, schema=None):
tblqry = """
diff --git a/lib/sqlalchemy/databases/information_schema.py b/lib/sqlalchemy/databases/information_schema.py
index 93f47de15..48f33cb96 100644
--- a/lib/sqlalchemy/databases/information_schema.py
+++ b/lib/sqlalchemy/databases/information_schema.py
@@ -98,6 +98,11 @@ class ISchema(object):
return self.cache[name]
+def table_names(connection, schema):
+ s = select([tables.c.table_name], tables.c.table_schema==schema)
+ return [row[0] for row in connection.execute(s)]
+
+
def reflecttable(connection, table, include_columns, ischema_names):
key_constraints = pg_key_constraints
diff --git a/lib/sqlalchemy/databases/informix.py b/lib/sqlalchemy/databases/informix.py
index f3a6cf60e..b4471df58 100644
--- a/lib/sqlalchemy/databases/informix.py
+++ b/lib/sqlalchemy/databases/informix.py
@@ -249,6 +249,10 @@ class InfoDialect(ansisql.ANSIDialect):
def schemadropper(self, *args, **params):
return InfoSchemaDroper( self , *args , **params)
+ def table_names(self, connection, schema):
+ s = "select tabname from systables"
+ return [row[0] for row in connection.execute(s)]
+
def has_table(self, connection, table_name,schema=None):
cursor = connection.execute("""select tabname from systables where tabname=?""", table_name.lower() )
return bool( cursor.fetchone() is not None )
diff --git a/lib/sqlalchemy/databases/mssql.py b/lib/sqlalchemy/databases/mssql.py
index 206291404..52963794c 100644
--- a/lib/sqlalchemy/databases/mssql.py
+++ b/lib/sqlalchemy/databases/mssql.py
@@ -462,6 +462,10 @@ class MSSQLDialect(ansisql.ANSIDialect):
except Exception, e:
raise exceptions.SQLError(statement, parameters, e)
+ def table_names(self, connection, schema):
+ from sqlalchemy.databases import information_schema as ischema
+ return ischema.table_names(connection, schema)
+
def raw_connection(self, connection):
"""Pull the raw pymmsql connection out--sensative to "pool.ConnectionFairy" and pymssql.pymssqlCnx Classes"""
try:
@@ -495,6 +499,10 @@ class MSSQLDialect(ansisql.ANSIDialect):
row = c.fetchone()
return row is not None
+ def table_names(self, connection):
+ sql = "SELECT tablename FROM pg_tables WHERE schemaname = 'public'"
+ return [row[0] for row in connection.execute(s)]
+
def reflecttable(self, connection, table, include_columns):
import sqlalchemy.databases.information_schema as ischema
diff --git a/lib/sqlalchemy/databases/oracle.py b/lib/sqlalchemy/databases/oracle.py
index eb7c559a8..e5411481f 100644
--- a/lib/sqlalchemy/databases/oracle.py
+++ b/lib/sqlalchemy/databases/oracle.py
@@ -364,6 +364,11 @@ class OracleDialect(ansisql.ANSIDialect):
dblink = ''
return name, owner, dblink
raise
+
+ def table_names(self, connection, schema):
+ # sorry, I have no idea what that dblink stuff is about :)
+ s = "select table_name from all_tables"
+ return [row[0] for row in connection.execute(s)]
def reflecttable(self, connection, table, include_columns):
preparer = self.identifier_preparer
diff --git a/lib/sqlalchemy/databases/postgres.py b/lib/sqlalchemy/databases/postgres.py
index b192c4778..697ca8d15 100644
--- a/lib/sqlalchemy/databases/postgres.py
+++ b/lib/sqlalchemy/databases/postgres.py
@@ -334,6 +334,9 @@ class PGDialect(ansisql.ANSIDialect):
return "losed the connection unexpectedly" in str(e)
else:
return False
+
+ def table_names(self, connection, schema):
+ return ischema.table_names(connection, schema)
def reflecttable(self, connection, table, include_columns):
if self.use_information_schema:
diff --git a/lib/sqlalchemy/databases/sqlite.py b/lib/sqlalchemy/databases/sqlite.py
index 725ea23e2..9492de8da 100644
--- a/lib/sqlalchemy/databases/sqlite.py
+++ b/lib/sqlalchemy/databases/sqlite.py
@@ -224,6 +224,10 @@ class SQLiteDialect(ansisql.ANSIDialect):
def oid_column_name(self, column):
return "oid"
+
+ def table_names(self, connection, schema):
+ s = "SELECT name FROM sqlite_master WHERE type='table'"
+ return [row[0] for row in connection.execute(s)]
def has_table(self, connection, table_name, schema=None):
cursor = connection.execute("PRAGMA table_info(%s)" %