From: Mike Bayer Date: Thu, 26 Jul 2007 22:30:09 +0000 (+0000) Subject: - removed problematic generate_dbapi_typemap() method. its hardcoded just for oracle X-Git-Tag: rel_0_4_6~7 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e979b3cf122fa99b7890a545b9e1336ef0863167;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - removed problematic generate_dbapi_typemap() method. its hardcoded just for oracle so far (which needs it the most). --- diff --git a/lib/sqlalchemy/databases/oracle.py b/lib/sqlalchemy/databases/oracle.py index 3350a35068..9d663f6ee4 100644 --- a/lib/sqlalchemy/databases/oracle.py +++ b/lib/sqlalchemy/databases/oracle.py @@ -220,6 +220,19 @@ class OracleDialect(ansisql.ANSIDialect): else: self.ORACLE_BINARY_TYPES = [] + def dbapi_type_map(self): + if self.dbapi is None: + return {} + else: + return { + dbapi.NUMBER: OracleInteger(), + dbapi.CLOB: OracleText(), + dbapi.BLOB: OracleBinary(), + dbapi.STRING: OracleString(), + dbapi.TIMESTAMP: OracleTimestamp(), + dbapi.BINARY: OracleRaw(), + datetime.datetime: OracleDate() + } def dbapi(cls): import cx_Oracle diff --git a/lib/sqlalchemy/engine/default.py b/lib/sqlalchemy/engine/default.py index ff7a62eec0..962e2ab606 100644 --- a/lib/sqlalchemy/engine/default.py +++ b/lib/sqlalchemy/engine/default.py @@ -21,28 +21,6 @@ class DefaultDialect(base.Dialect): self._ischema = None self.dbapi = dbapi self._figure_paramstyle(paramstyle=paramstyle, default=default_paramstyle) - self._generate_dbapi_type_map() - - def _generate_dbapi_type_map(self): - """locate all TypeEngine objects in the dialect's module and map them against the DBAPI - type they represent. - - TODO: dialects should export this mapping explicitly, instead of relying upon - module searching. - - TODO: so far, this only seems to work with oracle - """ - dialect_module = sys.modules[self.__class__.__module__] - map = {} - if False: - for obj in dialect_module.__dict__.values(): - if self.dbapi is not None and isinstance(obj, type) and issubclass(obj, types.TypeEngine): - obj = obj() - try: - map[obj.get_dbapi_type(self.dbapi)] = obj - except AttributeError: - pass - self._dbapi_type_map = map def decode_result_columnname(self, name): """decode a name found in cursor.description to a unicode object.""" @@ -50,7 +28,10 @@ class DefaultDialect(base.Dialect): return name.decode(self.encoding) def dbapi_type_map(self): - return self._dbapi_type_map + # most DBAPIs have problems with this (such as, psycocpg2 types + # are unhashable). So far Oracle can return it. + + return {} def create_execution_context(self, **kwargs): return DefaultExecutionContext(self, **kwargs)