- marked as critical
type level events for bind/result processors
Issue #2596
resolved
this would allow easy addition of bind and result handlers across existing types and their subclasses without the need for using custom types.
@event.listens_for(String, "bind_processor", retval=True)
def _str_bind_processor(type, dialect):
if dialect.name == 'oracle':
def process(value):
if value is not None:
value = value.encode(dialect.encoding)
return value
return process
else:
# type will return default bind processor
return None
#!diff
diff -r 7c6bde1c15c97cae34ef9449aa595168910fe87d lib/sqlalchemy/types.py
--- a/lib/sqlalchemy/types.py Thu Oct 25 12:07:38 2012 -0400
+++ b/lib/sqlalchemy/types.py Thu Oct 25 12:14:41 2012 -0400
@@ -273,7 +273,14 @@
return dialect._type_memos[self](self)['bind']('bind')
except KeyError:
d = self._dialect_info(dialect)
- d['bind']('bind') = bp = d['impl']('impl').bind_processor(dialect)
+ if self.dispatch.bind_processor:
+ bp = self.dispatch.bind_processor(self, dialect)
+ if bp is None:
+ bp = d['impl']('impl').bind_processor(dialect)
+ else:
+ bp = d['impl']('impl').bind_processor(dialect)
+
+ d['bind']('bind') = bp
return bp
def _cached_result_processor(self, dialect, coltype):
@@ -283,10 +290,18 @@
return dialect._type_memos[self](self)[coltype](coltype)
except KeyError:
d = self._dialect_info(dialect)
+
+ if self.dispatch.result_processor:
+ rp = self.dispatch.result_processor(self, dialect, coltype)
+ if rp is None:
+ rp = d['impl']('impl').result_processor(dialect, coltype)
+ else:
+ rp = d['impl']('impl').result_processor(dialect, coltype)
+
# key assumption: DBAPI type codes are
# constants. Else this dictionary would
# grow unbounded.
- d[coltype](coltype) = rp = d['impl']('impl').result_processor(dialect, coltype)
+ d[coltype](coltype) = rp
return rp
def _dialect_info(self, dialect):
Comments (4)
-
reporter -
reporter - marked as major
-
reporter - changed status to wontfix
haven't had a need for this, closing for now
-
reporter - removed milestone
Removing milestone: 0.8.xx (automated comment)
- Log in to comment