SQLAlchemy - Как обновить определенные строки после статистического запроса? - PullRequest
0 голосов
/ 10 июня 2019

У меня есть 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!)

...