【问题标题】:search between a range based on user input with SQLAlchemy?使用 SQLAlchemy 在基于用户输入的范围之间搜索?
【发布时间】:2018-12-18 06:25:17
【问题描述】:

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

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

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'}

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

如果不清楚,我深表歉意,因为我目前正在努力解决所有问题,如果需要任何澄清,我会很乐意尝试更好地解释。

【问题讨论】:

  • 您将相同的value 插入字符串中,两次传递给between()。你是什​​么意思?为什么这种行为令人惊讶?您没有显示任何代码,包括任何表格。你还问similar question(相同的表名等,使用cast + like 等)作为another user,这很奇怪。
  • 我们都在尝试学习烧瓶,所以这就是相似之处,我看不出我们的问题有什么相似之处,但我离题了。我知道我错误地将信息传递给查询(此时试图解决这个问题,我已经复制粘贴了相同的表单字段)我想知道的是如何将第二个值传递给查询,有没有办法指示我的表单我们的查询措辞,以便 formfield1 传递 value1 和 formfield 2 传递 value2 到查询?

标签: postgresql flask sqlalchemy


【解决方案1】:

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

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

原来这是一个非常简单的解决方案,使用 between 和设置最大长度限制。

【讨论】:

    猜你喜欢
    • 2018-12-22
    • 1970-01-01
    • 1970-01-01
    • 2019-08-12
    • 1970-01-01
    • 2013-04-18
    • 1970-01-01
    • 1970-01-01
    • 2012-12-08
    相关资源
    最近更新 更多