使用SQLAlchemy根据用户输入在范围之间进行搜索?

时间:2018-07-10 12:03:10

标签: postgresql flask sqlalchemy

我目前有一些查询,使用从表单传递的一个值可以很好地运行,但是现在我试图在需要将两个值(最小和最大长度)传递给查询的数字范围之间进行搜索,似乎无法解决。

我已经尝试了几种方法来执行此操作,但是似乎无法使其正常工作,因为我不确定如何使表单将两个值传递给查询,这是我目前正在尝试的方法:

query = query.filter(engorder.extlength.between (f'{value}', f'{value}'))

我可以在控制台中看到其使用的sql显示

 WHERE CAST(engorder.extlength AS VARCHAR) ILIKE %(param_1)s AND engorder.extlength BETWEEN %(extlength_1)s AND %(extlength_2)s ORDER BY engorder.startchass DESC, engorder.startchass DESC
2018-07-10 12:33:48,675 INFO sqlalchemy.engine.base.Engine {'param_1': '10000', 'extlength_1': '10000', 'extlength_2': '10000'}

所以我可以看到它正在尝试在两个值之间进行搜索,但我只是不知道如何将它们从模板上的表单传递给查询。

对于尚不清楚的情况,我深表歉意,因为我目前正试图将其全部包裹起来,如果需要任何明确的说明,我将很乐于尝试并进行更好的解释。

1 个答案:

答案 0 :(得分:0)

我设法回答了自己的问题(前一段时间,但是没有更新我的问题,这是给其他有类似问题的人使用的。)

query = query.filter(engorder.extlength.between(request.form.get('minlength') or '0',request.form.get('maxlength') or '17000')).order_by(engorder.startchass.desc())

事实证明,这是一个非常简单的解决方案,它在最大长度之间设置了限制。