From: Mike Bayer Date: Sun, 15 Jul 2007 04:11:51 +0000 (+0000) Subject: - converts cx_oracle datetime objects to Python datetime.datetime when X-Git-Tag: rel_0_3_9~11 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6566427fd0587fc45bdc4c0eeb651ce43d36d53d;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - converts cx_oracle datetime objects to Python datetime.datetime when Python 2.3 used [ticket:542] --- diff --git a/CHANGES b/CHANGES index 81945bffec..20445557f6 100644 --- a/CHANGES +++ b/CHANGES @@ -106,6 +106,8 @@ so that the LOB is read() automatically, if no typemap was present (i.e., if a textual execute() was issued). - mod operator '%' produces MOD [ticket:624] + - converts cx_oracle datetime objects to Python datetime.datetime when + Python 2.3 used [ticket:542] - postgres - fixed escaping of the modulo operator [ticket:624] - added support for reflection of domains [ticket:570] diff --git a/lib/sqlalchemy/databases/oracle.py b/lib/sqlalchemy/databases/oracle.py index e7f8f483ae..35b72af6c0 100644 --- a/lib/sqlalchemy/databases/oracle.py +++ b/lib/sqlalchemy/databases/oracle.py @@ -43,6 +43,14 @@ class OracleDate(sqltypes.Date): class OracleDateTime(sqltypes.DateTime): def get_col_spec(self): return "DATE" + + def convert_result_value(self, value, dialect): + if value is None or isinstance(value,datetime.datetime): + return value + else: + # convert cx_oracle datetime object returned pre-python 2.4 + return datetime.datetime(value.year,value.month, + value.day,value.hour, value.minute, value.second) # Note: # Oracle DATE == DATETIME @@ -57,6 +65,15 @@ class OracleTimestamp(sqltypes.TIMESTAMP): def get_dbapi_type(self, dialect): return dialect.TIMESTAMP + def convert_result_value(self, value, dialect): + if value is None or isinstance(value,datetime.datetime): + return value + else: + # convert cx_oracle datetime object returned pre-python 2.4 + return datetime.datetime(value.year,value.month, + value.day,value.hour, value.minute, value.second) + + class OracleString(sqltypes.String): def get_col_spec(self): return "VARCHAR(%(length)s)" % {'length' : self.length}