我可以在 sqlalchemy 中使用 MYSQL 空间扩展吗?

fly*_*pen 1 mysql sqlalchemy geospatial

我正在寻找一种将空间数据映射到 sqlalchemy 对象的方法。有人可以告诉我是否有这样的方法吗?谢谢!

adr*_*anu 5

您可以MySQL使用GeoAlchemy创建空间列,但不再维护此包。使用GeoAlchemy2 是不可能的,因为它不支持MySQL根据文档。

无论如何,GeoAlchemy没有必要MySQL在Python. 您可以通过创建自定义Geometry类来实现它:

from sqlalchemy import func
from sqlalchemy.types import UserDefinedType

class Geometry(UserDefinedType):
    def get_col_spec(self):
        return 'GEOMETRY'

    def bind_expression(self, bindvalue):
        return func.ST_GeomFromText(bindvalue, type_=self)

    def column_expression(self, col):
        return func.ST_AsText(col, type_=self)
Run Code Online (Sandbox Code Playgroud)

然后,您可以在模型中使用此自定义类型:

your_column = Column(Geometry, nullable=False)
Run Code Online (Sandbox Code Playgroud)