On Feb 8, 2011, at 4:56 PM, chris e wrote:
> 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:
>
The @compiles for _BindParamClause was never expected and is not covered within
a visit_insert() right now. Ticket #2042 is added. However, you're better off
using SQL level UTC functions for defaults in any case which would be the
workaround here. Here's one I use for PG + SQL Server. You can add another
for Oracle that includes your CAST expression if needed:
class utcnow(expression.FunctionElement):
type = DateTime()
@compiles(utcnow, 'postgresql')
def _pg_utcnow(element, compiler, **kw):
return "TIMEZONE('utc', CURRENT_TIMESTAMP)"
@compiles(utcnow, 'mssql')
def _ms_utcnow(element, compiler, **kw):
return "GETUTCDATE()"
> 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.
>
--
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.