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.

Reply via email to