我试图找到问题的答案。
我找到了一些答案,但我不知道如何将这些应用到我的问题中。
我正在使用flask 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
'请求'参数是' param'来自客户的http请求。
print(request)
看起来像这样。
{
'query': '{
"filters":{
"product_name":"aBcDeFgH"
}
}
}
当我尝试按名称' aBcDeFgH',
搜索产品时我想通过忽略大小写来获取包含此关键字的所有数据。
我该怎么做?
如果您有任何链接或想法,请将它扔给我。
然后我会尝试一种引用的新方式。
提前致谢,新年快乐。 :)
答案 0 :(得分:0)
我真的很抱歉我的谷歌搜索能力..
这是一件简单的事情。
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
。