在 SQLAlchemy 中打印计算出的距离

Printing the calculated distance in SQLAlchemy

我正在将 Flask-SQLAlchemy 与 Postgres、Postgis 和 GEOAlchemy 一起使用。我可以根据用户提交的点对 table 中的条目进行排序。我想知道我怎样才能 return 计算出的距离...

我是这样排序的:

result = Event.query.order_by(func.ST_Distance(Event.address_gps, coordinates_point)).paginate(page, 10).items

for result in results:
    result_dict = result.to_dict()

return result_dict

根据用户位置 (coordinates_point)。我想在 result_dict 的每个结果中添加一个条目,其中还包含订购商品的距离。我怎么做? func.ST_Distance return 是什么意思?

我试图在上面的 for 循环中添加:

current_distance = func.ST_Distance(Event.address_gps, coordinates_point)
result_dict['distance'] = current_distance

但这似乎没有用。

您可以使用column labels

query = Event.query.with_entities(Event, func.ST_Distance(Event.address_gps, coordinates_point).label('distance')).order_by('distance')
results = query.paginate(page, 10).items
for result in results:
    event = result.Event
    distance = result.distance
    result_dict = event.to_dict()
    result_dict['distance'] = distance