diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2016-02-04 13:36:45 -0500 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2016-02-04 13:36:45 -0500 |
commit | fd07c22e6e104b2d8f295e2e4a8ca19d7f218513 (patch) | |
tree | a2039bdb940e60e1ece671abf723ababb261b987 | |
parent | 93c5328e66d8491e73027f6e789df2255c4fa767 (diff) | |
download | sqlalchemy-fd07c22e6e104b2d8f295e2e4a8ca19d7f218513.tar.gz |
- add an impl for Enum to Oracle which has subclassing requirements
on unicode. Enum would be better as a TypeDecorator
at this point but then that becomes awkward with native enum
types (Interval works that way, but we don't need the bind_processor for
native interval...)
-rw-r--r-- | lib/sqlalchemy/dialects/oracle/cx_oracle.py | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/lib/sqlalchemy/dialects/oracle/cx_oracle.py b/lib/sqlalchemy/dialects/oracle/cx_oracle.py index cfbb87e7b..73ea65c66 100644 --- a/lib/sqlalchemy/dialects/oracle/cx_oracle.py +++ b/lib/sqlalchemy/dialects/oracle/cx_oracle.py @@ -415,6 +415,18 @@ class _OracleLong(oracle.LONG): class _OracleString(_NativeUnicodeMixin, sqltypes.String): pass +class _OracleEnum(_NativeUnicodeMixin, sqltypes.Enum): + def bind_processor(self, dialect): + enum_proc = sqltypes.Enum.bind_processor(self, dialect) + unicode_proc = _NativeUnicodeMixin.bind_processor(self, dialect) + + def process(value): + raw_str = enum_proc(value) + if unicode_proc: + raw_str = unicode_proc(raw_str) + return raw_str + return process + class _OracleUnicodeText( _LOBMixin, _NativeUnicodeMixin, sqltypes.UnicodeText): @@ -651,6 +663,7 @@ class OracleDialect_cx_oracle(OracleDialect): sqltypes.String: _OracleString, sqltypes.UnicodeText: _OracleUnicodeText, sqltypes.CHAR: _OracleChar, + sqltypes.Enum: _OracleEnum, # a raw LONG is a text type, but does *not* # get the LobMixin with cx_oracle. |