首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python中geoalchemy2的空间数据库后端

Python中geoalchemy2的空间数据库后端
EN

Stack Overflow用户
提问于 2018-10-09 14:17:46
回答 2查看 1K关注 0票数 2

我正在尝试使用geoalchemy2来实现SQLITE/spatialite。根据链接的说法,这似乎是可能的。

我想我的问题来自于定制引擎。

到目前为止我所拥有的是:

代码语言:javascript
复制
from flask_sqlalchemy import SQLAlchemy
from geoalchemy2 import Geometry
#and other imports...

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////Users/cricket/Documents/peas project/open-peas/localapp/test.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['SQLALCHEMY_ECHO'] = True

db = SQLAlchemy(app)

class Polygon(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), unique=True)
    point = db.Column(Geometry("POLYGON"))

@app.before_first_request
def init_request():
    db.create_all()

当我启动脚本时,我会得到以下消息:

代码语言:javascript
复制
cursor.execute(statement, parameters)
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) near "POLYGON": syntax error [SQL: '\nCREATE TABLE polygon (\n\tid INTEGER NOT NULL, \n\tname VARCHAR(64), \n\tpoint geometry(POLYGON,-1), \n\tPRIMARY KEY (id), \n\tUNIQUE (name)\n)\n\n'] (Background on this error at: http://sqlalche.me/e/e3q8)

知道我该怎么解决吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-13 16:52:54

我也有同样的问题,花了一段时间才解决。有很多层( SQLAlchemy,SQLite,spatialite,SQLAlchemy扩展,.)一起工作。希望这能帮上忙:

代码语言:javascript
复制
from sqlalchemy import event

db = SQLAlchemy(app)

@event.listens_for(db.engine, "connect")
def load_spatialite(dbapi_conn, connection_record):
  # From https://geoalchemy-2.readthedocs.io/en/latest/spatialite_tutorial.html
  dbapi_conn.enable_load_extension(True)
  dbapi_conn.load_extension('/usr/lib/x86_64-linux-gnu/mod_spatialite.so')
票数 4
EN

Stack Overflow用户

发布于 2020-12-16 22:26:49

在同一个问题上挣扎,即使是被接受的答案,我最终意识到Geometry()构造函数的Geometry()参数丢失了,正如解释的这里

以下内容应该向DB发送正确的sql命令:

代码语言:javascript
复制
class Polygon(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), unique=True)
    point = db.Column(Geometry("POLYGON", management = True))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52723239

复制
相关文章

相似问题

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