使用float查询只能工作到9.99 - flask api

时间:2018-06-04 16:19:37

标签: python api flask

我有一个专栏"价格"在我的API中

price = db.Column(db.Float)

我想查询这个价格:

def get(self, id, aPrice, bPrice):

        meal = MealModel.query.filter(MealModel.category.has(id=id)).all()

        if meal:
            return[meal.json() for meal in MealModel.query.filter(MealModel.category.has(id=id), MealModel.price >= aPrice, MealModel.price <= bPrice).all() ]

        return{'message': 'mealId not found'}, 404

使用此路由:

api.add_resource(MealbyCat, '/meal/category/<int:id>/<float:aPrice>/<float:bPrice>')

直到bPrice = 9.99绝对正确

bPrice = 10.0我只吃饭,价格为1.99 20.0到2.99 ..等等...

与100.0相同的行为

为什么会出现这种行为?我怎么能解决这个问题呢?

1 个答案:

答案 0 :(得分:0)

我猜你的MealModel.priceaPriceMealModel.pricebPrice都是字符串。比较字符串时,“2.5”&gt; “20”等尝试

 return[meal.json() for meal in MealModel.query.filter(MealModel.category.has(id=id), float(MealModel.price) >= float(aPrice), float(MealModel.price) <= float(bPrice)).all()

如果有效,请考虑将float()置于更好的位置。