플라스크 및 Geoalchemy2를 사용하여 일부 공간 데이터를 표시하는 작은 웹 사이트를 작성합니다. 이제는 몇 가지 새로운 공간 레코드 (예 : 점)를 postgresql 데이터베이스에 삽입 할 수 있지만 업데이트 할 때 문제가 발생합니다.Geoalchemy2를 사용하여 점과 같은 공간 데이터를 어떻게 업데이트 할 수 있습니까?
내 코드는 다음과 같습니다.
Model.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))
초기화 평 :
db = SQLAlchemy()
geo_engine = create_engine('postgresql://postgres:[email protected]/database', echo=True)
view.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)')
클래스하지만 너무 튜플처럼 보이지 않는 난 정말 혼란 스러워요 있도록 데이터베이스에 새 개체를 추가 할 수있는 유일한 예가있는 official document에서
Geopoint.geopt=.....
db.session.add(Geopoint)
db.session.commit()
으로 업데이트 할 수 없습니다.
데이터를 업데이트하기위한 MAGIC 문장이 있습니까? 또는 사용할 다른 지리학 라이브러리가 있습니까?
감사 응답.