diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-03-10 23:31:40 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-03-10 23:31:40 +0000 |
commit | 320cb9b75f763355ed798c80d245998ce57e21cc (patch) | |
tree | adba6e41c2fb90c507d394b32ed7335eaa8fb90e /lib/sqlalchemy | |
parent | dc2d085a75edf382fadcf40e100542b74a78686a (diff) | |
download | sqlalchemy-320cb9b75f763355ed798c80d245998ce57e21cc.tar.gz |
- oracle:
- got binary working for any size input ! cx_oracle works fine,
it was my fault as BINARY was being passed and not BLOB for
setinputsizes (also unit tests werent even setting input sizes).
- auto_setinputsizes defaults to True for Oracle, fixed cases where
it improperly propigated bad types.
Diffstat (limited to 'lib/sqlalchemy')
-rw-r--r-- | lib/sqlalchemy/databases/oracle.py | 13 | ||||
-rw-r--r-- | lib/sqlalchemy/engine/default.py | 8 |
2 files changed, 12 insertions, 9 deletions
diff --git a/lib/sqlalchemy/databases/oracle.py b/lib/sqlalchemy/databases/oracle.py index 8d112fc46..966834eb2 100644 --- a/lib/sqlalchemy/databases/oracle.py +++ b/lib/sqlalchemy/databases/oracle.py @@ -51,6 +51,9 @@ class OracleTimestamp(sqltypes.DateTime): return dialect.TIMESTAMP class OracleText(sqltypes.TEXT): + def get_dbapi_type(self, dbapi): + return dbapi.CLOB + def get_col_spec(self): return "CLOB" @@ -68,17 +71,13 @@ class OracleChar(sqltypes.CHAR): class OracleBinary(sqltypes.Binary): def get_dbapi_type(self, dbapi): - return dbapi.BINARY + return dbapi.BLOB def get_col_spec(self): return "BLOB" def convert_bind_param(self, value, dialect): - if value is None: - return None - else: - # this is RAWTOHEX - return ''.join(["%.2X" % ord(c) for c in value]) + return value def convert_result_value(self, value, dialect): if value is None: @@ -149,7 +148,7 @@ class OracleExecutionContext(default.DefaultExecutionContext): self.set_input_sizes(proxy(), parameters) class OracleDialect(ansisql.ANSIDialect): - def __init__(self, use_ansi=True, auto_setinputsizes=False, module=None, threaded=True, **kwargs): + def __init__(self, use_ansi=True, auto_setinputsizes=True, module=None, threaded=True, **kwargs): self.use_ansi = use_ansi self.threaded = threaded if module is None: diff --git a/lib/sqlalchemy/engine/default.py b/lib/sqlalchemy/engine/default.py index ef0a6cc57..c6e0d9dc4 100644 --- a/lib/sqlalchemy/engine/default.py +++ b/lib/sqlalchemy/engine/default.py @@ -193,14 +193,18 @@ class DefaultExecutionContext(base.ExecutionContext): for params in plist[0:1]: for key in params.positional: typeengine = params.binds[key].type - inputsizes.append(typeengine.get_dbapi_type(self.dialect.module)) + dbtype = typeengine.dialect_impl(self.dialect).get_dbapi_type(self.dialect.module) + if dbtype is not None: + inputsizes.append(dbtype) cursor.setinputsizes(*inputsizes) else: inputsizes = {} for params in plist[0:1]: for key in params.keys(): typeengine = params.binds[key].type - inputsizes[key] = typeengine.get_dbapi_type(self.dialect.module) + dbtype = typeengine.dialect_impl(self.dialect).get_dbapi_type(self.dialect.module) + if dbtype is not None: + inputsizes[key] = dbtype cursor.setinputsizes(**inputsizes) def _process_defaults(self, engine, proxy, compiled, parameters): |