首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过geoalchemy2和alembic使用postgis更新DB时,类型"geometry“不允许使用类型修饰符

通过geoalchemy2和alembic使用postgis更新DB时,类型"geometry“不允许使用类型修饰符
EN

Stack Overflow用户
提问于 2016-01-21 09:37:49
回答 1查看 1.1K关注 0票数 2

我的alembic更新脚本用于添加新的postgis几何点,如下所示:

代码语言:javascript
复制
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

当我通过

代码语言:javascript
复制
alembic upgrade head

出现以下错误

代码语言:javascript
复制
sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) type modifier is not allowed for type "geometry"
LINE 1: ALTER TABLE events ADD COLUMN location geometry(POINT,-1)

我使用的是postgres9.1,postgis 1.5,sqlalchemy 1.0.9,geoalchemy2 0.2.6。

EN

回答 1

Stack Overflow用户

发布于 2016-01-21 16:28:08

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

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

如果由于同样的原因你不能升级你的Postgis安装,添加一个几何列的正确方法是使用函数AddGeometryColumn()。SQL语句看起来是这样的:

代码语言:javascript
复制
SELECT AddGeometryColumn ('public','events','geom',0,'POINT',2);

其中参数的含义是:

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34913898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档