diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-11-18 02:44:15 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-11-18 02:44:15 +0000 |
commit | 43d476ce60339f3369847191988b96b3f3665f44 (patch) | |
tree | 61d11c2f05dcfbef9c8d50c3140d867e2baee3c4 /lib/sqlalchemy/databases/oracle.py | |
parent | 89da0162725d0d68a9f6ef5a650d8fa4cf128339 (diff) | |
download | sqlalchemy-43d476ce60339f3369847191988b96b3f3665f44.tar.gz |
- oracle will now reflect "DATE" as an OracleDateTime column, not
OracleDate
- added awareness of schema name in oracle table_names() function,
fixes metadata.reflect(schema='someschema') [ticket:847]
Diffstat (limited to 'lib/sqlalchemy/databases/oracle.py')
-rw-r--r-- | lib/sqlalchemy/databases/oracle.py | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/lib/sqlalchemy/databases/oracle.py b/lib/sqlalchemy/databases/oracle.py index 015701e90..71c82bfd8 100644 --- a/lib/sqlalchemy/databases/oracle.py +++ b/lib/sqlalchemy/databases/oracle.py @@ -177,7 +177,7 @@ colspecs = { ischema_names = { 'VARCHAR2' : OracleString, - 'DATE' : OracleDate, + 'DATE' : OracleDateTime, 'DATETIME' : OracleDateTime, 'NUMBER' : OracleNumeric, 'BLOB' : OracleBinary, @@ -442,10 +442,23 @@ class OracleDialect(default.DefaultDialect): else: return name.encode(self.encoding) + def get_default_schema_name(self,connection): + try: + return self._default_schema_name + except AttributeError: + name = self._default_schema_name = \ + connection.execute('SELECT USER FROM DUAL').scalar() + return name + def table_names(self, connection, schema): # note that table_names() isnt loading DBLINKed or synonym'ed tables - s = "select table_name from all_tables where tablespace_name NOT IN ('SYSTEM', 'SYSAUX')" - return [self._normalize_name(row[0]) for row in connection.execute(s)] + if schema is None: + s = "select table_name from all_tables where tablespace_name NOT IN ('SYSTEM', 'SYSAUX')" + cursor = connection.execute(s) + else: + s = "select table_name from all_tables where tablespace_name NOT IN ('SYSTEM','SYSAUX') AND OWNER = :owner" + cursor = connection.execute(s,{'owner':self._denormalize_name(schema)}) + return [self._normalize_name(row[0]) for row in cursor] def reflecttable(self, connection, table, include_columns): preparer = self.identifier_preparer |