From 6a57b3a806b3d2a86dab733bc89fb3ca03f84ac4 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Thu, 16 Aug 2012 21:45:55 -0400 Subject: [PATCH] - update this to work with the latest postgis - fix the userdefinedtype issue. --- examples/postgis/postgis.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/examples/postgis/postgis.py b/examples/postgis/postgis.py index 247265e17c..1d930c5a17 100644 --- a/examples/postgis/postgis.py +++ b/examples/postgis/postgis.py @@ -1,6 +1,6 @@ from sqlalchemy.orm.interfaces import AttributeExtension from sqlalchemy.orm.properties import ColumnProperty -from sqlalchemy.types import TypeEngine +from sqlalchemy.types import UserDefinedType from sqlalchemy.sql import expression from sqlalchemy import event @@ -11,11 +11,11 @@ class GisElement(object): @property def wkt(self): - return func.AsText(literal(self, Geometry)) + return func.ST_AsText(literal(self, Geometry)) @property def wkb(self): - return func.AsBinary(literal(self, Geometry)) + return func.ST_AsBinary(literal(self, Geometry)) def __str__(self): return self.desc @@ -40,24 +40,25 @@ class TextualGisElement(GisElement, expression.Function): def __init__(self, desc, srid=-1): assert isinstance(desc, basestring) self.desc = desc - expression.Function.__init__(self, "GeomFromText", desc, srid) + expression.Function.__init__(self, "ST_GeomFromText", desc, srid) # SQL datatypes. -class Geometry(TypeEngine): +class Geometry(UserDefinedType): """Base PostGIS Geometry column type. Converts bind/result values to/from a PersistentGisElement. """ - name = 'GEOMETRY' - def __init__(self, dimension=None, srid=-1): self.dimension = dimension self.srid = srid + def get_col_spec(self): + return "GEOMETRY" + def bind_processor(self, dialect): def process(value): if value is not None: @@ -137,10 +138,9 @@ class GISDDL(object): elif event == 'after-create': table.columns = self._stack.pop() - for c in table.c: if isinstance(c.type, Geometry): - bind.execute(select([func.AddGeometryColumn(table.name, c.name, c.type.srid, c.type.name, c.type.dimension)], autocommit=True)) + bind.execute(select([func.AddGeometryColumn(table.name, c.name, c.type.srid, c.type.get_col_spec(), c.type.dimension)], autocommit=True)) elif event == 'after-drop': table.columns = self._stack.pop() -- 2.47.2