我只是写了一个小网站来展示一些使用烧瓶和 Geoalchemy2 的空间数据。现在我可以在我的 postgresql 数据库中插入一些新的空间记录(例如,点),但是当我想更新它们时遇到了一些麻烦。
我的代码如下。
模型.py:
class Geopoint(db.Model):
"""point class"""
__tablename__ = 'geo_point'
ptid = db.Column(db.Integer, primary_key=True)
quiztime = db.Column(db.Numeric)
geopt = db.Column(Geography(geometry_type='POINT', srid=4326))
初始化.py:
db = SQLAlchemy()
geo_engine = create_engine('postgresql://postgres:password@localhost/database', echo=True)
视图.py:
geo_session_class = sessionmaker(bind=geo_engine)
geo_session = geo_session_class()
if request.method == 'POST':
if geo_type == 'POINT':
pt_res = geo_session.query(
Geopoint.ptid,
Geopoint.quiztime,
Geopoint.geopt.ST_AsText()
).filter_by(ptid=geo_id).first()
if pt_res:
print pt_res
else:
geo_session.add(
Geopoint(
quiztime=time.time(),
geopt=geo_type + '(' + geo_coord.encode('utf-8') + ')'
)
)
geo_session.commit()
当我添加新的点记录时,我的代码有效。
当我编辑存在点时,我的更新部分代码返回打印结果(我只想知道如何编写它。):
(4L, Decimal('1508430387.581'), u'POINT(120.057, 30.262)')
这看起来不像是一个类,而是一个元组,所以我不能用它来更新它
Geopoint.geopt=.....
db.session.add(Geopoint)
db.session.commit()
在官方文档中只有将新对象添加到数据库中的示例,所以我真的很困惑。
是否有任何 MAGIC 语句来更新数据,或者是否有任何其他地理 orm 库可供使用?
感谢任何答案。