summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2007-03-10 23:31:40 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2007-03-10 23:31:40 +0000
commit320cb9b75f763355ed798c80d245998ce57e21cc (patch)
treeadba6e41c2fb90c507d394b32ed7335eaa8fb90e /lib/sqlalchemy
parentdc2d085a75edf382fadcf40e100542b74a78686a (diff)
downloadsqlalchemy-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.py13
-rw-r--r--lib/sqlalchemy/engine/default.py8
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):