【问题标题】:How to ignore case when filter value in database with python [duplicate]使用python过滤数据库中的值时如何忽略大小写[重复]
【发布时间】:2018-01-05 01:32:19
【问题描述】:

我试图找到我的问题的答案。

我找到了一些答案,但我不知道如何将这些应用于我的问题。

我正在使用烧瓶 sqlalchemy。

这是我获取产品列表的python代码。

def get_products(cls, request):
    with gshop.session_scope() as session:

        products = session.query(Product.id,
                                 Product.product_name,
                                 Product.logo_img_id,
                                 Product.product_cat_id,
                                 Product.display_no,
                                 Product.brand_id)

        if 'query' in request:
            query = json.loads(request['query'])
            filters = query['filters']
            for key, value in filters.items():
                try:
                    products = products.filter(getattr(Product, key).like("%" + str(value) + "%"))
                except AttributeError:
                    pass

'request'参数是客户端http请求的'param'。

print(request) 看起来像这样。

{
    'query': '{
        "filters":{
            "product_name":"aBcDeFgH"
        }
    }
}

当我尝试按名称“aBcDeFgH”搜索产品时,

我想获取包含此关键字的所有数据,忽略大小写。

我该怎么做?

如果你有任何链接或想法,就扔给我吧。

那我就用引用的新方法试试。

提前致谢,新年快乐。 :)

【问题讨论】:

    标签: python database sqlalchemy flask-sqlalchemy ignore-case


    【解决方案1】:

    我真的很抱歉我的谷歌搜索能力..

    这是一件很简单的事情。

    Case Insensitive Flask-SQLAlchemy Query

    这个链接为这个愚蠢的问题提供了一个完美的答案。

    这是一个解决方案示例。

    原始代码

    products = products.filter(getattr(Product, key).like("%" + str(value) + "%"))
    

    已解决的代码

    products = products.filter(getattr(Product, key).ilike("%" + str(value) + "%"))
    

    只需将like 更改为ilike

    【讨论】:

      猜你喜欢
      • 2014-09-05
      • 1970-01-01
      • 2020-11-25
      • 1970-01-01
      • 2014-12-23
      • 2010-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多