On Thu, Jun 9, 2011 at 6:28 PM, Michael Bayer <mike...@zzzcomputing.com> wrote: > > On Jun 9, 2011, at 3:57 AM, Eric Lemoine wrote: > >> Hi >> >> Here's another issue with porting GeoAlchemy to SQLAlchemy 0.7. >> >> >> So GeoA defines a TypeEngine, which looks like this: >> >> class Geometry(TypeEngine): >> >> def __init__(self, dimension=2, srid=4326, spatial_index=True, **kwargs): >> self.dimension = dimension >> self.srid = srid >> self.spatial_index = True >> self.kwargs = kwargs >> super(GeometryBase, self).__init__() >> >> >> Using the Geometry type with Oracle requires passing an additional >> argument to the constructor, namely "diminfo": >> >> Geometry(dimension=2, srid=4326, spatial_index=True, >> diminfo='the_diminfo_string') >> >> Then our Oracle-specific code uses type.kwargs['diminfo'] to access >> the "diminfo" value. >> >> >> This worked well with SQLA 0.6, but it doesn't work with SQLA 0.7. >> >> It doesn't work with 0.7 because SQLA may clone the type instance, and >> because of the way SQLA clones object (constructor_copy), the clone >> does not have self.kwargs['diminfo']. > > That's the default adaption provided by TypeEngine.adapt(). Provide your > own adapt() that does what's needed. For examples see Interval, Enum.
Ok, I'll take a look at adapt(). Note that our Geometry type isn't specific to Oracle though. Thanks again. -- Eric Lemoine Camptocamp France SAS Savoie Technolac, BP 352 73377 Le Bourget du Lac, Cedex Tel : 00 33 4 79 44 44 96 Mail : eric.lemo...@camptocamp.com http://www.camptocamp.com -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.