Thanks! Will try to get this working.

I am using GeoAlchemy quite extensively but these more obscure
functions and types are not supported...

On Aug 16, 9:14 pm, Michael Bayer <mike...@zzzcomputing.com> wrote:
> On Aug 16, 2010, at 11:21 AM, bekozi wrote:
>
> > Is it possible to work with set-returning functions in SQLAlchemy
> > without using raw SQL? For example, the PostgreSQL/PostGIS function
> > ST_Dump (http://bit.ly/culek7) returns a “geometry_dump" set. Using
> > ST_Dump in raw SQL goes something like:
>
> >    SELECT
> >      ST_Dump(ST_Intersection(data_table1.geom,data_table2.geom)).geom AS
> > geom...
>
> > In SQLAlchemy an attempt to construct this unsurprisingly yields an
> > attribute error:
>
> > session.query(func.ST_Dump(functions.intersection(Data1.geom,Data2.geom).ge 
> > om.label('geom'))
> >    AttributeError: 'Function' object has no attribute 'geom'
>
> any SQL you want can be made available with Python expressions using 
> @compiles:
>
> from sqlalchemy import *
> from sqlalchemy.sql import ColumnElement, column
>
> from sqlalchemy.ext.compiler import compiles
>
> class geom(ColumnElement):
>     def __init__(self, base):
>         self.base = base
>
> @compiles(geom)
> def compile(expr, compiler, **kw):
>     return compiler.process(expr.base) + ".geom"
>
> data1, data2 = column('data1'), column('data2')
> print select([func.ST_Dump(
>             geom(func.intersection(geom(data1),geom(data2)))
>             ).label('geom')])
>
> > Curious if anyone knows a solution! A search for using set-returning
> > functions in SQLAlchemy yielded no obvious solution...
>
> any reason you aren't using GeoAlchemy ?

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalch...@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