To simplify date handling in a project on which I am working, I am
storing UTC dates in the database in a timestamp with timezone field,
however, because cx_Oracle does not have any timezone functionality, I
need to cast the UTC timestamp I'm inserting into the database as a
timestamp in UTC so that the database does not convert it to the db
timezone. This also needs to apply to default values.


I have the following, however, it is not called for default values:

from pytz import UTC
class UTCDateTime(TypeDecorator):
    impl = TIMESTAMP

    # add the UTC time zone info to naive timestamps
    def process_result_value(self, value, dialect) :
        if value != None :
            value = UTC.localize(value)

        return value

@compiles(_BindParamClause)
def _compile_utc_date(element, compiler, **kw):
    if isinstance(element.type, UTCDateTime) :
       return "from_tz(cast(%s as timestamp), 'UTC')" \
           % compiler.visit_bindparam(element, **kw)

    return compiler.visit_bindparam(element, **kw)

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to