【问题标题】:How to filter a query in flask-peewee by URL?如何通过 URL 过滤 flask-peewee 中的查询?
【发布时间】:2014-01-11 13:12:51
【问题描述】:

我想通过flask-peewee 运行以下查询,

merchant_name LIKE 'seaside%'

SELECT * 
FROM  `merchant_details` 
WHERE  `merchant_name` LIKE  'seaside%'

这是以下 URL 的返回 JSON,我需要过滤 merhcnat_name http://www.XXXXX.com/api/merchant_details/

http://www.XXXXX.com/api/merchant_details/?merchant_name__like=seaside(这不起作用)

{
  "meta": {
    "model": "merchant_details",
    "next": "",
    "page": 1,
    "previous": ""
  },
  "objects": [
    {
      "merchant_name": "Seaside Grill",
      "city": "Santa Monica ",
      "zipcode": "90401",
      "long": "-118.4884742",
      "phone": "3102399844",
      "state": "CA",
      "updated_on": "2013-11-07 01:14:42",
      "lat": "34.0189893",
      "street_1": "406 Broadway",
      "street_2": "1",
      "merchant_id": "1",
      "id": "2"
    },
{
  "merchant_name": "Jack n'  Jill's",
  "city": "Santa Monica",
  "zipcode": "90401",
  "long": "-118.4937635",
  "phone": "3109873733",
  "state": "CA",
  "updated_on": "2013-11-08 08:20:29",
  "lat": "34.0173215",
  "street_1": "510 Santa Monica Blvd",
  "street_2": "1",
  "merchant_id": "48",
  "id": "32"
}
  ]
}

【问题讨论】:

    标签: python mysql flask peewee flask-peewee


    【解决方案1】:

    你应该像这样对 url 进行编码:

    ?merchant_name__like=seaside%25
    

    可以通过urllib.urlencode({'merchant_name__like': 'seaside%'})获取编码后的查询字符串,?merchant_name__like=seaside在sql中表示LIKE seaside

    【讨论】:

    • 感谢解答,如何避免小写和大写? Seaside%25 有结果,但 seaside%25 没有结果
    • 你可以用 ilike 代替。
    【解决方案2】:

    您可以使用 sqlalchemy-elasticquery 来进行这样的搜索:

    ?filters={ "merchant_nameseaside" : {"like" : "%seaside%"} }
    

    还有另一个自定义过滤器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-18
      • 1970-01-01
      • 2018-10-29
      • 1970-01-01
      • 1970-01-01
      • 2014-08-06
      • 2016-05-08
      • 1970-01-01
      相关资源
      最近更新 更多