我有2个表,table1和table2处于零对多关系。每个表都有一个geom
列的多边形几何,而table1有一个dist
列要计算。
我对SQL和SQLAlchemy还是很陌生,但是我建立了以下查询,该查询使用PostGIS返回与该ID的多边形及其在table2中所有关联的多边形之间的平均距离匹配的table1 ID:
session.query(table1.id, func.avg(
func.ST_Distance(func.ST_Centroid(table1.geom), func.ST_Centroid(table2.geom)))\
.label('dist'))\
.filter(table2.table1_id == table1.id)\
.group_by(table1.id)
我现在的问题是,不使用非常慢的循环,我不知道如何使用这些值更新table1.dist
。之前,我已经成功使用update()
在更新功能中直接对列执行了操作,但是我对如何执行此操作感到困惑。 (我通常很难弄清楚如何避免SQLAlchemy中的循环!)