Estoy tratando de convertir una consulta en una declaración de orm igual en sqlalchemy y geoalchemy2. Estoy luchando por obtener la referencia para p1.geom en la subconsulta en la cláusula que no existe.
SELECT p1.geom FROM polygons as p1 WHERE p1.column1 = 'something' AND NOT EXISTS( SELECT 1 FROM polygons AS p2 WHERE p2.column2 = 'something else' AND ST_Intersects(p1.geom, p2.geom) )Ya probé un poco, pero lo más cercano que obtuve fue algo como esto:
p1 = self._session.query(polygons.geom).filter_by(column1='something').subquery() p2 = ~self._session.query(polygons.geom).filter(polygons.column2 == 'something else')\ .filter(polygons.geom.intersects(p1.c.geom)).exists() result = self._session.query(polygons.geom)\ .filter_by(column1='something')\ .filter(p2)Lo que obtuve de eso:
SELECT polygons.geom FROM polygons WHERE polygons.column1 = 'something' AND NOT (EXISTS ( SELECT 1 FROM ( SELECT polygons.geom AS geom FROM polygons WHERE polygons.column1 = 'something') AS anon_1 WHERE polygons.column2 = 'something else' AND (polygons.geom && anon_1.geom)))¿Alguna idea que pueda ayudar?