diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-02-23 22:15:09 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-02-23 22:15:09 +0000 |
| commit | 2aa9f5541bbbaf63a9762c78db21292180b17219 (patch) | |
| tree | 02e1693e5e44ec98f5b49a9ef840ef628989fc37 /lib/sqlalchemy/dialects/oracle | |
| parent | 189414fe2999d281ad8b45b89f97a3c56fc5e84b (diff) | |
| download | sqlalchemy-2aa9f5541bbbaf63a9762c78db21292180b17219.tar.gz | |
- "out" parameters require a type that is supported by
cx_oracle. An error will be raised if no cx_oracle
type can be found.
- Column() requires a type if it has no foreign keys (this is
not new). An error is now raised if a Column() has no type
and no foreign keys. [ticket:1705]
Diffstat (limited to 'lib/sqlalchemy/dialects/oracle')
| -rw-r--r-- | lib/sqlalchemy/dialects/oracle/cx_oracle.py | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/lib/sqlalchemy/dialects/oracle/cx_oracle.py b/lib/sqlalchemy/dialects/oracle/cx_oracle.py index cfa5ba45b..854eb875a 100644 --- a/lib/sqlalchemy/dialects/oracle/cx_oracle.py +++ b/lib/sqlalchemy/dialects/oracle/cx_oracle.py @@ -74,10 +74,11 @@ with this feature but it should be regarded as experimental. """ -from sqlalchemy.dialects.oracle.base import OracleCompiler, OracleDialect, RESERVED_WORDS, OracleExecutionContext +from sqlalchemy.dialects.oracle.base import OracleCompiler, OracleDialect, \ + RESERVED_WORDS, OracleExecutionContext from sqlalchemy.dialects.oracle import base as oracle from sqlalchemy.engine import base -from sqlalchemy import types as sqltypes, util +from sqlalchemy import types as sqltypes, util, exc from datetime import datetime import random @@ -219,11 +220,19 @@ class Oracle_cx_oracleExecutionContext(OracleExecutionContext): name = self.compiled.bind_names[bindparam] value = self.compiled_parameters[0][name] if bindparam.isoutparam: - dbtype = bindparam.type.dialect_impl(self.dialect).get_dbapi_type(self.dialect.dbapi) + dbtype = bindparam.type.dialect_impl(self.dialect).\ + get_dbapi_type(self.dialect.dbapi) if not hasattr(self, 'out_parameters'): self.out_parameters = {} + if dbtype is None: + raise exc.InvalidRequestError("Cannot create out parameter for parameter " + "%r - it's type %r is not supported by" + " cx_oracle" % + (name, bindparam.type) + ) self.out_parameters[name] = self.cursor.var(dbtype) - self.parameters[0][quoted_bind_names.get(name, name)] = self.out_parameters[name] + self.parameters[0][quoted_bind_names.get(name, name)] = \ + self.out_parameters[name] def create_cursor(self): c = self._connection.connection.cursor() |
