SQLAlchemy-汇总查询后如何更新特定行?

时间:2019-06-10 11:41:22

标签: python sqlalchemy geoalchemy2

我有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中的循环!)

0 个答案:

没有答案