【发布时间】:2017-02-01 16:32:35
【问题描述】:
我有一个从 python 运行的简单 sql,它从表中获取所有这些项目(主要是我很好奇的 mpoly)。这是几何。
cur = self.db.cursor()
cur.execute('select St_AsText(ST_Centroid(mpoly)) from swsite_cesiumentity')
allEntities = cur.fetchall()
那我就可以把信息弄出来了:
print ' ***'
print allEntities[0]
print '----'
它会给我:
Row(st_astext='POINT(-87.266150008217 30.0857181963441)')
这很好,但是我尝试使用这些数据来获取与上述点相距甚远的所有点,我不知道如何使用我想要的 sql 查询中的类型使用。
试过这个:
for currentEntity in allEntities:
print currentEntity
cur2 = self.db.cursor()
cur2.execute ('SELECT * FROM swsite_cesiumentity WHERE ST_Distance_Sphere(mpoly, ST_GeomFromText(' + currentEntity.st_astext + ')) <= radius_mi * 1609.34)) from swsite_cesiumentity')
list = cur2.fetchall()
print list
它不喜欢我提供的第二条 sql 语句:
pg.ProgrammingError: ERROR: syntax error at or near "30.0857181963441"
LINE 1: ...ere(mpoly, ST_GeomFromText(POINT(-87.266150008217 30.0857181...
^
C02RH2U9G8WM:ingest sth$
【问题讨论】: