thanks for this complete answer !

I will investigate a little more in existing projects like geoalchemy,
mapfish to find a nice way to implement oracle spatial support.

regards
Nicolas

2009/9/7 Sanjiv Singh <singhsanj...@gmail.com>

>
> On Mon, Sep 7, 2009 at 8:25 PM, Michael Bayer<mike...@zzzcomputing.com>
> wrote:
> >
> > SQL expressions can't be called from within the bind processor of
> > types.  The bind processor only affects the values sent as parameters
> > to the DBAPI execute() and executemany() functions.    There is a
> > feature request that is as yet unimplemented to provide this feature,
> > however.
> >
> > An approach towards embedding geometry functions has been addressed in
> > a SQLAlchemy example which you can find in the source distribution in
> > examples/postgis/ .    This example builds upon the ORM to provide the
> > embedding so might not work for your needs.
> >
> > A full blown package for GIS integration is GeoAlchemy:
> http://geoalchemy.org/
> >   , which supports three different spatial databases.   Oracle's
> > backend could be added to this package as well if you were in it for
> > the long haul and could contribute to them.   I am not entirely
> > certain but I think this package may be building off of the examples
> > in the Postgis example.
>
> Absolutely. It has been acknowledged here[1] :)
>
> The code could be improved a lot as has been discussed here earlier[2]
> but I have not yet had the time for that.
> I would be happy to see some participation. So please feel free to
> clone the repo[3] and send pull requests.
>
> regards
> Sanjiv
>
> [1] http://geoalchemy.org/intro.html#author
> [2]
> http://groups.google.com/group/sqlalchemy/browse_thread/thread/b84682489891563e#
> [3] http://bitbucket.org/sanjiv/geoalchemy/
>
> >
> > Here's yet another approach which uses the compiler extension.  This
> > is at the SQL level and may be enough to suit your needs, and also
> > adds bind parameter support to your function.  It requires the usage
> > of a custom SQL element for the "value" side of an expression (it is
> > essentially a more explicit version of how the aforementioned feature
> > improvement would be implemented):
> >
> > from sqlalchemy import *
> > from sqlalchemy.sql import ClauseElement, table, column
> > from sqlalchemy.ext.compiler import compiles
> >
> > m = MetaData()
> >
> > t = table('mytable',
> >     column('some_geom')
> > )
> >
> > class GeomValue(ClauseElement):
> >     def __init__(self, wkt, srid):
> >         self.wkt = literal(wkt)
> >         self.srid = srid
> >
> > @compiles(GeomValue)
> > def compile_geom(element, compiler, **kw):
> >     return "SDO_GEOMETRY(%s,%s)" % (compiler.process(element.wkt),
> > element.srid)
> >
> >
> > print t.insert().values(some_geom=GeomValue("foo", "bar"))
> >
> > print t.select().where(t.c.some_geom==GeomValue("foo", "bar"))
> >
> >
> >
> > On Sep 7, 2009, at 7:39 AM, Nicolas wrote:
> >
> >>
> >> Hi list,
> >>
> >> While trying to build a type for spatial geometry in Oracle Spatial
> >> ( SDO_GEOMETRY) , i try to use the build-in function SDO_GEOMETRY from
> >> oracle in the bind_processor for converting WKT (text representation
> >> for spatial geometry) to SDO_GEOM.
> >>
> >> The problem is that sqlalchemy place quotes around the SDO_GEOMETRY
> >> function call and then i have the following error :
> >>
> >> DatabaseError: (DatabaseError) ORA-00932: inconsistent datatypes:
> >> expected MDSYS.SDO_GEOMETRY got CHAR
> >>
> >> I there a  way to call functions in the bind_processor ???
> >>
> >> Sample code :
> >>
> >>    def bind_processor(self, dialect):
> >>        """convert value from a geometry object to database"""
> >>        def convert(value):
> >>            if value is None:
> >>                return None
> >>            else:
> >> ------>        return "SDO_GEOMETRY('%s',%s)" % (value.wkt, self.srid)
> >>
> >>        return convert
> >>
> >>    def result_processor(self, dialect):
> >>        """convert value from database to a geometry object"""
> >>        def convert(value):
> >>            if value is None:
> >>                return None
> >>            else:
> >>                return asShape(sdo.Geometry(value))
> >>
> >>        return convert
> >>
> >> >
> >
> >
> > >
> >
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
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