]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
removed all dialect table_names() methods and standardized
authorMike Bayer <mike_mp@zzzcomputing.com>
Fri, 19 Mar 2010 21:37:43 +0000 (17:37 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Fri, 19 Mar 2010 21:37:43 +0000 (17:37 -0400)
on get_table_names().  [ticket:1739]

13 files changed:
lib/sqlalchemy/dialects/access/base.py
lib/sqlalchemy/dialects/firebird/base.py
lib/sqlalchemy/dialects/informix/base.py
lib/sqlalchemy/dialects/maxdb/base.py
lib/sqlalchemy/dialects/mssql/base.py
lib/sqlalchemy/dialects/mssql/information_schema.py
lib/sqlalchemy/dialects/mysql/base.py
lib/sqlalchemy/dialects/mysql/oursql.py
lib/sqlalchemy/dialects/oracle/base.py
lib/sqlalchemy/dialects/postgresql/base.py
lib/sqlalchemy/dialects/sqlite/base.py
lib/sqlalchemy/dialects/sybase/base.py
lib/sqlalchemy/engine/base.py

index 7dfb3153ea8c70702d54bc830ebff727c1476740..2b76b93d03dd9dd24d3f0097119b302677aa668e 100644 (file)
@@ -16,7 +16,7 @@ This dialect is *not* tested on SQLAlchemy 0.6.
 """
 from sqlalchemy import sql, schema, types, exc, pool
 from sqlalchemy.sql import compiler, expression
-from sqlalchemy.engine import default, base
+from sqlalchemy.engine import default, base, reflection
 from sqlalchemy import processors
 
 class AcNumeric(types.Numeric):
@@ -299,7 +299,8 @@ class AccessDialect(default.DefaultDialect):
         finally:
             dtbs.Close()
 
-    def table_names(self, connection, schema):
+    @reflection.cache
+    def get_table_names(self, connection, schema=None, **kw):
         # A fresh DAO connection is opened for each reflection
         # This is necessary, so we get the latest updates
         dtbs = daoEngine.OpenDatabase(connection.engine.url.database)
index a2da132dafb8915881dddb8a6ed66b97aa1bfaf4..70318157cbd6951515ded334b5317653f810aa6c 100644 (file)
@@ -378,7 +378,8 @@ class FBDialect(default.DefaultDialect):
         c = connection.execute(genqry, [self.denormalize_name(sequence_name)])
         return c.first() is not None
 
-    def table_names(self, connection, schema):
+    @reflection.cache
+    def get_table_names(self, connection, schema=None, **kw):
         s = """
         SELECT DISTINCT rdb$relation_name
         FROM rdb$relation_fields
@@ -386,10 +387,6 @@ class FBDialect(default.DefaultDialect):
         """
         return [self.normalize_name(row[0]) for row in connection.execute(s)]
 
-    @reflection.cache
-    def get_table_names(self, connection, schema=None, **kw):
-        return self.table_names(connection, schema)
-
     @reflection.cache
     def get_view_names(self, connection, schema=None, **kw):
         s = """
index 54aae6eb34275882a97a90bf36eebcd630ddc500..266a74a7b8b0fd1c74d1770cc6b31a4aadd7efef 100644 (file)
@@ -193,7 +193,8 @@ class InformixDialect(default.DefaultDialect):
         cu.execute('SET LOCK MODE TO WAIT')
         #cu.execute('SET ISOLATION TO REPEATABLE READ')
 
-    def table_names(self, connection, schema):
+    @reflection.cache
+    def get_table_names(self, connection, schema=None, **kw):
         s = "select tabname from systables"
         return [row[0] for row in connection.execute(s)]
 
index 758cfaf052d3659c1346b25579daf7cbdf1f388e..2e1d6a58f2daeabda3a337d45b05d858b5a047ad 100644 (file)
@@ -63,7 +63,7 @@ import datetime, itertools, re
 from sqlalchemy import exc, schema, sql, util, processors
 from sqlalchemy.sql import operators as sql_operators, expression as sql_expr
 from sqlalchemy.sql import compiler, visitors
-from sqlalchemy.engine import base as engine_base, default
+from sqlalchemy.engine import base as engine_base, default, reflection
 from sqlalchemy import types as sqltypes
 
 
@@ -880,7 +880,8 @@ class MaxDBDialect(default.DefaultDialect):
         rp = connection.execute(sql, bind)
         return bool(rp.first())
 
-    def table_names(self, connection, schema):
+    @reflection.cache
+    def get_table_names(self, connection, schema=None, **kw):
         if schema is None:
             sql = (" SELECT TABLENAME FROM TABLES WHERE "
                    " SCHEMANAME=CURRENT_SCHEMA ")
index 7660fe9f720515adc75fbeb816b7fa285e63057f..57b46808376f5e4b0ab5338ab07c6f057e5de8ab 100644 (file)
@@ -1149,11 +1149,6 @@ class MSDialect(default.DefaultDialect):
                 pass
         return self.schema_name
 
-    def table_names(self, connection, schema):
-        s = select([ischema.tables.c.table_name], 
-                   ischema.tables.c.table_schema==schema)
-        return [row[0] for row in connection.execute(s)]
-
 
     def has_table(self, connection, tablename, schema=None):
         current_schema = schema or self.default_schema_name
@@ -1182,7 +1177,7 @@ class MSDialect(default.DefaultDialect):
         s = sql.select([tables.c.table_name],
             sql.and_(
                 tables.c.table_schema == current_schema,
-                tables.c.table_type == 'BASE TABLE'
+                tables.c.table_type == u'BASE TABLE'
             ),
             order_by=[tables.c.table_name]
         )
@@ -1196,7 +1191,7 @@ class MSDialect(default.DefaultDialect):
         s = sql.select([tables.c.table_name],
             sql.and_(
                 tables.c.table_schema == current_schema,
-                tables.c.table_type == 'VIEW'
+                tables.c.table_type == u'VIEW'
             ),
             order_by=[tables.c.table_name]
         )
@@ -1320,11 +1315,11 @@ class MSDialect(default.DefaultDialect):
             table_fullname = "%s.%s" % (current_schema, tablename)
             cursor = connection.execute(
                 "select ident_seed('%s'), ident_incr('%s')" 
-                % (tablename, tablename)
+                % (table_fullname, table_fullname)
                 )
 
             row = cursor.first()
-            if not row is None:
+            if row is not None and row[0] is not None:
                 colmap[ic]['sequence'].update({
                     'start' : int(row[0]),
                     'increment' : int(row[1])
index bb6ff315a75300e6587e692af3faa6ffb1541d44..312e83cb181d2c5311f1bea494fd6b344fab41ef 100644 (file)
@@ -21,7 +21,7 @@ tables = Table("TABLES", ischema,
     Column("TABLE_CATALOG", CoerceUnicode, key="table_catalog"),
     Column("TABLE_SCHEMA", CoerceUnicode, key="table_schema"),
     Column("TABLE_NAME", CoerceUnicode, key="table_name"),
-    Column("TABLE_TYPE", String, key="table_type"),
+    Column("TABLE_TYPE", String(convert_unicode=True), key="table_type"),
     schema="INFORMATION_SCHEMA")
 
 columns = Table("COLUMNS", ischema,
@@ -42,7 +42,7 @@ constraints = Table("TABLE_CONSTRAINTS", ischema,
     Column("TABLE_SCHEMA", CoerceUnicode, key="table_schema"),
     Column("TABLE_NAME", CoerceUnicode, key="table_name"),
     Column("CONSTRAINT_NAME", CoerceUnicode, key="constraint_name"),
-    Column("CONSTRAINT_TYPE", String, key="constraint_type"),
+    Column("CONSTRAINT_TYPE", String(convert_unicode=True), key="constraint_type"),
     schema="INFORMATION_SCHEMA")
 
 column_constraints = Table("CONSTRAINT_COLUMN_USAGE", ischema,
index 2311b06df10eb7a4542482b1f932c023e718d93a..df4a666fbe7229f695665b7e762d1df9b0389752 100644 (file)
@@ -1766,24 +1766,20 @@ class MySQLDialect(default.DefaultDialect):
 
     @reflection.cache
     def get_table_names(self, connection, schema=None, **kw):
+        """Return a Unicode SHOW TABLES from a given schema."""
         if schema is not None:
             current_schema = schema
         else:
             current_schema = self.default_schema_name
-        table_names = self.table_names(connection, current_schema)
-        return table_names
-
-    def table_names(self, connection, schema):
-        """Return a Unicode SHOW TABLES from a given schema."""
 
         charset = self._connection_charset
         if self.server_version_info < (5, 0, 2):
             rp = connection.execute("SHOW TABLES FROM %s" %
-                self.identifier_preparer.quote_identifier(schema))
+                self.identifier_preparer.quote_identifier(current_schema))
             return [row[0] for row in self._compat_fetchall(rp, charset=charset)]
         else:
             rp = connection.execute("SHOW FULL TABLES FROM %s" %
-                    self.identifier_preparer.quote_identifier(schema))
+                    self.identifier_preparer.quote_identifier(current_schema))
 
             return [row[0] for row in self._compat_fetchall(rp, charset=charset)\
                                                         if row[1] == 'BASE TABLE']
@@ -1796,7 +1792,7 @@ class MySQLDialect(default.DefaultDialect):
         if schema is None:
             schema = self.default_schema_name
         if self.server_version_info < (5, 0, 2):
-            return self.table_names(connection, schema)
+            return self.get_table_names(connection, schema)
         charset = self._connection_charset
         rp = connection.execute("SHOW FULL TABLES FROM %s" %
                 self.identifier_preparer.quote_identifier(schema))
index f26bc4da2f82265d4785c9b574945d02e13c48b1..9e38993f24a2187e40b8378d282496b5ffbeb947 100644 (file)
@@ -151,8 +151,8 @@ class MySQLDialect_oursql(MySQLDialect):
                                             **kw
         )
         
-    def table_names(self, connection, schema):
-        return MySQLDialect.table_names(self,
+    def get_table_names(self, connection, schema=None, **kw):
+        return MySQLDialect.get_table_names(self,
                             connection.connect().\
                                         execution_options(_oursql_plain_query=True),
                             schema
index f76edabf2a8f3a7538fb6fb188cdf42383cb8c09..b270f38cf4e9de58a03965346728b86d962337eb 100644 (file)
@@ -631,18 +631,6 @@ class OracleDialect(default.DefaultDialect):
     def _get_default_schema_name(self, connection):
         return self.normalize_name(connection.execute(u'SELECT USER FROM DUAL').scalar())
 
-    def table_names(self, connection, schema):
-        # note that table_names() isnt loading DBLINKed or synonym'ed tables
-        if schema is None:
-            schema = self.default_schema_name
-        s = sql.text(
-            "SELECT table_name FROM all_tables "
-            "WHERE nvl(tablespace_name, 'no tablespace') NOT IN ('SYSTEM', 'SYSAUX') "
-            "AND OWNER = :owner "
-            "AND IOT_NAME IS NULL")
-        cursor = connection.execute(s, owner=self.denormalize_name(schema))
-        return [self.normalize_name(row[0]) for row in cursor]
-
     def _resolve_synonym(self, connection, desired_owner=None, desired_synonym=None, desired_table=None):
         """search for a local synonym matching the given desired owner/name.
 
@@ -712,7 +700,18 @@ class OracleDialect(default.DefaultDialect):
     @reflection.cache
     def get_table_names(self, connection, schema=None, **kw):
         schema = self.denormalize_name(schema or self.default_schema_name)
-        return self.table_names(connection, schema)
+
+        # note that table_names() isnt loading DBLINKed or synonym'ed tables
+        if schema is None:
+            schema = self.default_schema_name
+        s = sql.text(
+            "SELECT table_name FROM all_tables "
+            "WHERE nvl(tablespace_name, 'no tablespace') NOT IN ('SYSTEM', 'SYSAUX') "
+            "AND OWNER = :owner "
+            "AND IOT_NAME IS NULL")
+        cursor = connection.execute(s, owner=schema)
+        return [self.normalize_name(row[0]) for row in cursor]
+
 
     @reflection.cache
     def get_view_names(self, connection, schema=None, **kw):
index cbd92ccfecddd2195118dd0fee20e29aad4359fa..f45fc9671c4f4a204df7229bf65f5548336cd7dc 100644 (file)
@@ -725,17 +725,6 @@ class PGDialect(default.DefaultDialect):
         cursor = connection.execute(sql.text(query, bindparams=bindparams))
         return bool(cursor.scalar())
 
-    def table_names(self, connection, schema):
-        result = connection.execute(
-            sql.text(u"SELECT relname FROM pg_class c "
-                "WHERE relkind = 'r' "
-                "AND '%s' = (select nspname from pg_namespace n where n.oid = c.relnamespace) " %
-                 schema,
-                typemap = {'relname':sqltypes.Unicode}
-            )
-        )
-        return [row[0] for row in result]
-
     def _get_server_version_info(self, connection):
         v = connection.execute("select version()").scalar()
         m = re.match('PostgreSQL (\d+)\.(\d+)(?:\.(\d+))?(?:devel)?', v)
@@ -805,8 +794,17 @@ class PGDialect(default.DefaultDialect):
             current_schema = schema
         else:
             current_schema = self.default_schema_name
-        table_names = self.table_names(connection, current_schema)
-        return table_names
+
+        result = connection.execute(
+            sql.text(u"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]
+
 
     @reflection.cache
     def get_view_names(self, connection, schema=None, **kw):
index d7637e71b45c6f2fc2ff3291a4cc5af4dcf4a360..0d9827322807dbeff01424713f9817370bd76ded 100644 (file)
@@ -360,8 +360,9 @@ class SQLiteDialect(default.DefaultDialect):
             return connect
         else:
             return None
-    
-    def table_names(self, connection, schema):
+
+    @reflection.cache
+    def get_table_names(self, connection, schema=None, **kw):
         if schema is not None:
             qschema = self.identifier_preparer.quote_identifier(schema)
             master = '%s.sqlite_master' % qschema
@@ -400,10 +401,6 @@ class SQLiteDialect(default.DefaultDialect):
 
         return (row is not None)
 
-    @reflection.cache
-    def get_table_names(self, connection, schema=None, **kw):
-        return self.table_names(connection, schema)
-
     @reflection.cache
     def get_view_names(self, connection, schema=None, **kw):
         if schema is not None:
index bdaab2eb7d5b9c604fd847bec5999185ce446b0f..aaec7a504dba10b0b005abc41b5a6e917b7ca58a 100644 (file)
@@ -382,9 +382,6 @@ class SybaseDialect(default.DefaultDialect):
     def get_table_names(self, connection, schema=None, **kw):
         if schema is None:
             schema = self.default_schema_name
-        return self.table_names(connection, schema)
-
-    def table_names(self, connection, schema):
 
         result = connection.execute(
                     text("select sysobjects.name from sysobjects, sysusers "
index 095f7a960ec9811c85619c9dbc6d1579d4fa82a9..5490169c6ef40ab18c085b7c3d6342688d3e0170 100644 (file)
@@ -1569,7 +1569,7 @@ class Engine(Connectable, log.Identified):
         if not schema:
             schema =  self.dialect.default_schema_name
         try:
-            return self.dialect.table_names(conn, schema)
+            return self.dialect.get_table_names(conn, schema)
         finally:
             if connection is None:
                 conn.close()