我目前正在使用 Flask 和 postgres 作为后端开发 Web 应用程序。在这方面,我有一个带有字段lat, lng
和rofrs_value
. 为了找到pgAdmin的教堂和它们的坐标,我运行此命令:select lat, lng, rofrs_value from church order by rofrs_value desc limit 10
。这将导致此处显示 10 个结果:Query result with 10 rows。在后端,我有这个端点和方法来检索 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"
当我访问这个网址时
http://localhost:5000/risks/flood/rofrs/?lat=52.364253408754152&lon=1.237043090299609我得到 0 的结果,并且消息说没有找到具有给定坐标的实体,即使 pgAdmin 显示数据库中有一行具有这些坐标。
有人知道什么可能导致 SQLAlchemy 找不到匹配的行吗?先感谢您。
感谢@galaxyan,我找到的解决方案是在 risk_rofrs 方法中切换type=float
到type=str
。有了这个方法返回预期的响应。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句