# This module is part of SQLAlchemy and is released under
# the MIT License: http://www.opensource.org/licenses/mit-license.php
-import sys, StringIO, string, types, re
+import datetime, sys, StringIO, string, types, re
import sqlalchemy.util as util
import sqlalchemy.sql as sql
from sqlalchemy import *
import information_schema as ischema
+try:
+ import mx.DateTime.DateTime as mxDateTime
+except:
+ mxDateTime = None
+
try:
import psycopg2 as psycopg
#import psycopg2.psycopg1 as psycopg
return "TIMESTAMP"
class PG1DateTime(sqltypes.DateTime):
def convert_bind_param(self, value, engine):
- # TODO: perform appropriate postgres1 conversion between Python DateTime/MXDateTime
- # this one doesnt seem to work with the "emulation" mode
if value is not None:
+ if isinstance(value, datetime.datetime):
+ seconds = float(str(value.second) + "."
+ + str(value.microsecond))
+ mx_datetime = mxDateTime(value.year, value.month, value.day,
+ value.hour, value.minute,
+ seconds)
+ return psycopg.TimestampFromMx(mx_datetime)
return psycopg.TimestampFromMx(value)
else:
return None
def convert_result_value(self, value, engine):
- # TODO: perform appropriate postgres1 conversion between Python DateTime/MXDateTime
- return value
+ if value is None:
+ return None
+ second_parts = str(value.second).split(".")
+ seconds = int(second_parts[0])
+ microseconds = int(second_parts[1])
+ return datetime.datetime(value.year, value.month, value.day,
+ value.hour, value.minute, seconds,
+ microseconds)
+
def get_col_spec(self):
return "TIMESTAMP"
class PG2Date(sqltypes.Date):