Convierta una consulta SQL compleja a SQLAlchemy

Me quedo sin ideas. Busqué en Google ahora más de un día y todavía no puedo encontrar ninguna respuesta útil a mi pregunta.

Lo que hice hasta ahora, intenté usar SQL sin formato pero sin suerte.

locations = db.session.query(Location, select([text('( 6371 * acos( cos( radians("53.6209798282177") ) * cos( radians( lat ) ) * cos( radians( lng ) - radians("13.96948162900808") ) + sin( radians("53.6209798282177") ) * sin( radians( lat ) ) ) )')]).label('distance')).having('distance' < 25).all()

Cuando utilizo esta consulta SQL sin formato, obtengo cero resultados, pero cuando ejecuto la misma consulta enmysql devuelve resultados correctos.

Además, descubrí que al imprimir la consulta en el terminal, no maneja elHAVING() cláusula correctamente.

Mi consulta se ve así cuando se imprime:

SELECT location.id AS location_id, location.created_date AS location_created_date, location.zip AS location_zip, location.user_id AS location_user_id, location.lat AS location_lat, location.lng AS location_lng, location.city AS location_city 
FROM location 
HAVING false = 1

¿Cómo convierto esta consulta SQL a SQLAlchemy

SELECT *, ( 6371 * acos( cos( radians(53.6209798282177) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(11.96948162900808) ) + sin( radians(53.6209798282177) ) * sin( radians( lat ) ) ) ) AS distance FROM location HAVING distance < 25 ORDER BY distance;

Mi mesa se ve así:

+--------------+----------------+------+-----+---------+-------+
| Field        | Type           | Null | Key | Default | Extra |
+--------------+----------------+------+-----+---------+-------+
| id           | varchar(50)    | NO   | PRI | NULL    |       |
| created_date | datetime       | YES  |     | NULL    |       |
| zip          | varchar(5)     | NO   | UNI | NULL    |       |
| user_id      | varchar(50)    | NO   |     | NULL    |       |
| lat          | decimal(15,13) | NO   |     | NULL    |       |
| lng          | decimal(15,13) | NO   |     | NULL    |       |
| city         | text           | NO   |     | NULL    |       |
+--------------+----------------+------+-----+---------+-------+

Cualquier ayuda es apreciada.

Respuestas a la pregunta(1)

Su respuesta a la pregunta