У меня есть 2 таблицы, table1 и table2 в соотношении ноль-ко-многим.В каждой таблице есть столбец geom
с геометрией многоугольника, а table1 имеет столбец dist
для вычисления.
Я довольно новичок в SQL и SQLAlchemy, но я создал следующий запрос, использующий PostGISвернуть идентификаторы table1, соответствующие среднему расстоянию между многоугольником этого идентификатора и всеми связанными с ним многоугольниками в table2:
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!)