SQLAlchemy не находит правильных результатов - PullRequest
0 голосов
/ 04 марта 2019

В настоящее время я занимаюсь разработкой веб-приложения, использующего колбу и postgres для бэкэнда.В этом у меня есть модель церкви с полями lat, lng и rofrs_value.Чтобы найти церкви и их координаты в pgAdmin, я запускаю эту команду: select lat, lng, rofrs_value from church order by rofrs_value desc limit 10.Это приводит к 10 показанным здесь результатам: Результат запроса с 10 строками .На бэкэнде у меня есть эта конечная точка и метод для получения значений rofrs:

@bp.route("/flood/rofrs/", methods=["GET"])
def risk_rofrs():
    lat = request.args.get("lat", default=None, type=float)
    lon = request.args.get("lon", default=None, type=float)
    return church_rofrs(lat, lon)

def church_rofrs(lat, lon):
    ROFRS_SCORES = {
        0: 0,
        1: 10,
        2: 50,
        3: 100,
        4: 200
    }
    prob_level = db.session.query(Church.rofrs_value).filter(
        Church.lng == lon,
        Church.lat == lat
    ).all()
    if len(prob_level) != 0:
        print("The building is a church with a ROFRS of " + str(prob_level[0][0]))
        return str(ROFRS_SCORES[prob_level[0][0]])
    else:
        print("Entity with given coordinates not found. Returning zero.")
        return "0"

Когда я посещаю этот URL

<a href="http://localhost:5000/risks/flood/rofrs/?lat=52.364253408754152&lon=1.237043090299609" rel="nofollow noreferrer">http://localhost:5000/risks/flood/rofrs/?lat=52.364253408754152&lon=1.237043090299609</a> 
, я получаю результат 0 и сообщение о том, что с помощьюзаданные координаты, даже если pgAdmin показывает, что в базе данных есть строка с этими координатами.

Кто-нибудь знает, что может быть причиной того, что SQLAlchemy не может найти соответствующую строку?Заранее спасибо.

1 Ответ

0 голосов
/ 06 марта 2019

Решение, которое я нашел благодаря @galaxyan, заключается в переключении type=float на type=str в методе risk_rofrs.При этом метод возвращает ожидаемый ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...