def result_processor(self, dialect, coltype):
def process(value):
- if not isinstance(value, datetime):
- return value
- else:
+ if value is not None:
return value.date()
- return process
-
-class _OracleDateTime(sqltypes.DateTime):
- def result_processor(self, dialect, coltype):
- def process(value):
- if value is None or isinstance(value, datetime):
- return value
else:
- # convert cx_oracle datetime object returned pre-python 2.4
- return datetime(value.year, value.month,
- value.day,value.hour, value.minute, value.second)
- return process
-
-# Note:
-# Oracle DATE == DATETIME
-# Oracle does not allow milliseconds in DATE
-# Oracle does not support TIME columns
-
-# only if cx_oracle contains TIMESTAMP
-class _OracleTimestamp(sqltypes.TIMESTAMP):
- def result_processor(self, dialect, coltype):
- def process(value):
- if value is None or isinstance(value, datetime):
return value
- else:
- # convert cx_oracle datetime object returned pre-python 2.4
- return datetime(value.year, value.month,
- value.day,value.hour, value.minute, value.second)
return process
class _LOBMixin(object):
colspecs = {
- sqltypes.DateTime : _OracleDateTime,
sqltypes.Date : _OracleDate,
sqltypes.Binary : _OracleBinary,
sqltypes.Boolean : oracle._OracleBoolean,
sqltypes.Text : _OracleText,
sqltypes.UnicodeText : _OracleUnicodeText,
- sqltypes.TIMESTAMP : _OracleTimestamp,
sqltypes.CHAR : _OracleChar,
sqltypes.Integer : _OracleInteger, # this is only needed for OUT parameters.
# it would be nice if we could not use it otherwise.
dialect = cx_oracle.dialect()
for start, test in [
- (DateTime(), cx_oracle._OracleDateTime),
- (TIMESTAMP(), cx_oracle._OracleTimestamp),
+ (Date(), cx_oracle._OracleDate),
(oracle.OracleRaw(), cx_oracle._OracleRaw),
(String(), String),
(VARCHAR(), VARCHAR),