class PsycoPG2(PsycoPG): """PostgreSQL driver class using psycopg2.""" _db_mod = 'psycopg2' from mx import DateTime def __init__(self, *args, **kws): super(PsycoPG2, self).__init__(*args, **kws) from psycopg2 import extensions USE_DATE_TIME = extensions.new_type( self._db_mod.DATETIME.values + self._db_mod._psycopg.DATE.values, "USE_DATE_TIME", PsycoPG2.cast_date_time) extensions.register_type(USE_DATE_TIME) def cast_date_time(value, curs): if value is not None: if isinstance(value, str): t = value.split() if len(t) > 1: t = t[0].split("-") + t[1].split(":") else: t = t[0].split("-") return PsycoPG2.DateTime.DateTime(*tuple([float(s) for s in t])) else: raise ValueError, "alt er visst ikke string...", repr(value) return PsycoPG2.DateTime(*value.timetuple()[:-3]) cast_date_time = staticmethod(cast_date_time)