【问题标题】:Flask Alembic migration error with geoalchemy2 - invalid geometry_typeFlask Alembic 迁移错误与 geoalchemy2 - 无效的几何类型
【发布时间】:2020-02-12 17:20:06
【问题描述】:

我正在尝试实施 Flask-Migrate 来帮助管理迁移,但在尝试制作迁移脚本时出现错误:“geoalchemy2.exc.ArgumentError: invalid geometry_type 'POINTZ' for dimension 2”。

我有一个 Flask 项目,并且正在使用 geoalchemy2 与 PostGIS 数据库进行交互。该数据库有一些带有 PolygonZ 和 PointZ 几何形状的表(维度 = 3)。通过命令行使用 Flask-Migrate 进行的初始迁移工作正常并生成了迁移脚本(然后对其进行了调整以开始工作)。

3D几何模型定义如下:

from MyProject import db
from geoalchemy2 import Geometry

class Source(db.Model):
    __tablename__ = 'source'
    id = db.Column(db.Integer, primary_key=True)
    project_id = db.Column(db.Integer(), db.ForeignKey('project.id'))
    project = db.relationship('Project', foreign_keys=[project_id])
    category = db.Column(db.String(300))
    geometry = db.Column(Geometry(geometry_type='POINTZ', srid=4326, dimension=3))

class Building(db.Model):
    __tablename__ = 'building'
    id = db.Column(db.Integer, primary_key=True)
    project_id = db.Column(db.Integer(), db.ForeignKey('project.id'))
    project = db.relationship('Project', foreign_keys=[project_id])
    geometry = db.Column(Geometry(geometry_type='POLYGONZ', srid=4326, dimension=3))

使用 Flask Migrate 命令在命令行上完成迁移。

flask db migrate

没有编写脚本就会失败并产生这个 geoalchemy2 错误

geoalchemy2.exc.ArgumentError: invalid geometry_type 'POINTZ' for dimension 2

我也尝试过 Flask-Alembic,最后它给了我同样的 geoalchemy2 错误,所以我认为这与 Alembic 如何查看几何列有关。只是不确定是什么。

任何建议将不胜感激。谢谢

【问题讨论】:

    标签: python flask sqlalchemy alembic geoalchemy2


    【解决方案1】:

    发现了问题,我使用的是 GeoAlchemy2 版本 0.6.2,this issue 发现问题存在于 GeoAlchemy2 中。

    我在更新到 GeoAlchemy2 版本 0.6.3 后重新运行了 Flask Migrate,它创建了迁移脚本而没有崩溃。

    【讨论】:

      猜你喜欢
      • 2017-01-06
      • 2013-07-04
      • 2013-07-31
      • 2021-11-08
      • 1970-01-01
      • 2013-06-16
      • 2013-03-18
      • 2019-02-04
      • 2015-12-24
      相关资源
      最近更新 更多