Итак, у меня есть модель в SQLAlchemy, которая представляет собой магазин (имя, адрес, широта, долгота). Мне нужно выполнить пользовательский запрос, который позволяет мне передать широту и долготу моего текущего местоположения, чтобы найти близлежащие магазины. Я хочу, чтобы иметь возможность вызвать этот метод модели изнутри моего представления, чтобы вернуть набор объектов магазина. Может ли кто-нибудь посоветовать мне, как реализовать эту функциональность в моей модели?Как создать собственный SQL-запрос в моей модели SQLAlchemy?
0
A
ответ
0
мое решение по тому же проблеме
sql = "SELECT id, name,(" \
"6371 * ACOS(" \
"COS(RADIANS(:lat)) " \
"* COS(RADIANS(latitude))" \
"* COS(RADIANS(longitude) - RADIANS(:lng))" \
"+ SIN(RADIANS(:lat)) " \
"* SIN(RADIANS(latitude)))) " \
"AS distance " \
"FROM shop " \
"ORDER BY distance"
answer = shop.query.from_statement(sql).params(lat=lat,lng=lng).first()
0
Я настоятельно рекомендую вам использовать расширение пространственных данных для DBM, т.е. PostGIS. Выполнение необработанного SQL-запроса будет очень дорогостоящим в обработке. Используя функции пространственного пространства, вам просто нужно выполнить собственный запрос SQLAlchemy, поскольку @action написал или использовал следующие строки:
sql = "<here your custom sql query>"
result = db.engine.execute(sql)