2

我用于添加新 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。

4

1 回答 1

2

您正在使用 Postgis 1.5,它不支持类型的类型修饰符geometry

如何解决这个问题:Postgis 1.5 目前已经很老了,所以升级到 Postgis 2.x

如果出于同样的原因您无法升级 Postgis 安装,添加几何列的正确方法是使用函数AddGeometryColumn()。SQL 语句如下所示:

SELECT AddGeometryColumn ('public','events','geom',0,'POINT',2);

参数的意思是:

1) 模式名,2) 表名,3) 列名,4) srid,5) 类型,6) 维度。

但是,您已经使用正确的标志在 Postgis 1.5 中添加几何列:management=True。根据文档,这应该强制 SqlAlchemy 使用 AddGeometryColumn() 语法。也许错误来自 Alembic 而不是来自 GeoAlchemy?

于 2016-01-21T08:28:08.317 回答