2015-04-12 3 views
0

Итак, у меня есть модель в SQLAlchemy, которая представляет собой магазин (имя, адрес, широта, долгота). Мне нужно выполнить пользовательский запрос, который позволяет мне передать широту и долготу моего текущего местоположения, чтобы найти близлежащие магазины. Я хочу, чтобы иметь возможность вызвать этот метод модели изнутри моего представления, чтобы вернуть набор объектов магазина. Может ли кто-нибудь посоветовать мне, как реализовать эту функциональность в моей модели?Как создать собственный SQL-запрос в моей модели SQLAlchemy?

ответ

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)