有没有可能使用sqlalchemy orm来实现haversine的公式,而不是使用原始sql查询?
目前我的sql实现是:
SELECT
places.*,
6373.0 * (2 * atan2(sqrt(temp), sqrt(1 - temp))) as distance
FROM (
SELECT
places.*,
power(sin(d_lat / 2), 2) + cos(RADIANS(places.latitude)) * cos(RADIANS(<some_user_latitude>)) * power(sin(d_long / 2), 2) as temp
FROM
(
SELECT
places.*,
RADIANS(<some_user_latitude>) - RADIANS(places.latitude) as d_lat,
RADIANS(<some_user_longitude>) - RADIANS(places.longitude) as d_long
FROM
public.places as places
) as places
) as places
虽然这个实现工作得很好,但我想知道:
可以用炼金术吗 .query()
在不使用任何原始sql的情况下创建相同的结果?
是否可以将结果Map到自定义模型(例如place)?
对于我的原始sql或sqlalchemy,在性能方面有什么改进吗?或者这个实现还可以吗?
暂无答案!
目前还没有任何答案,快来回答吧!