我的用于添加新postgis几何点的alembic更新脚本如下所示:
from alembic import op
import sqlalchemy as sa
import geoalchemy2 as ga
def upgrade():
op.add_column('stuff', sa.Column('my_location', ga.Geometry('POINT', management=True)))
def downgrade():
pass
当我通过
运行脚本时alembic upgrade head
发生以下错误
sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) type modifier is not allowed for type "geometry"
LINE 1: ALTER TABLE events ADD COLUMN location geometry(POINT,-1)
我使用postgres 9.1,postgis 1.5,sqlalchemy 1.0.9,geoalchemy2 0.2.6。
答案 0 :(得分:2)
您使用的是Postgis 1.5,它不支持MailHandlerImpl
类型的类型修饰符。
如何解决问题:Postgis 1.5目前已经很老了,所以升级到Postgis 2.x
如果出于同样的原因无法升级Postgis安装,添加几何列的正确方法是使用函数AddGeometryColumn()。 SQL语句看起来如此:
geometry
参数的意思是:
1)架构名称, 2)表名, 3)列名, 4)srid, 5)类型, 6)维度。
但是,您已经在Postgis 1.5中使用正确的标志来添加几何列:SELECT AddGeometryColumn ('public','events','geom',0,'POINT',2);
。根据{{3}},这应该强制SqlAlchemy使用AddGeometryColumn()语法。也许这个错误来自Alembic,而不是来自GeoAlchemy?