summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/dialects/oracle
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2010-02-23 22:15:09 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2010-02-23 22:15:09 +0000
commit2aa9f5541bbbaf63a9762c78db21292180b17219 (patch)
tree02e1693e5e44ec98f5b49a9ef840ef628989fc37 /lib/sqlalchemy/dialects/oracle
parent189414fe2999d281ad8b45b89f97a3c56fc5e84b (diff)
downloadsqlalchemy-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.py17
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()