在SQLAlchemy中打印计算的距离

时间:2016-01-30 22:32:04

标签: postgresql sqlalchemy postgis flask-sqlalchemy

我正在使用Flask-SQLAlchemy和Postgres,Postgis和GEOAlchemy。我能够根据用户提交的点对表中的条目进行排序。我想知道我怎么也可以返回计算出的距离......

这是我对项目进行排序的方式:

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返回什么?

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

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

但这似乎不起作用。

1 个答案:

答案 0 :(得分:2)

您可以使用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