我在我的postgresql数据库中存储了各种类型的包:[“离合器包”,“肩包”,“手提包”]。我正在编写一个基于python flask的api端点,用户可以使用它提供一个搜索词,比如“红肩包”或“灰色离合器包”。现在我想用sqlalchemy编写一个查询,这样对于这些给定的搜索项,我可以在bags表中查找该值。我写了这个,但它只在用户输入的搜索字符串是复数的情况下才起作用,如果用户输入“灰色离合器包”则不起作用

    categories = db.session.query(Bags.id) \
    .filter(literal(search_string).ilike(func.concat('%', Bags.type, '%')))\
    .all()

如何在筛选时从数据库中的行李类型中除去尾随的“s”?我希望能够这样查询:
type_in_db = "Clutch Bags"
search_string = "Grey Clutch Bag"

if type_in_db.rstrip('s') in search_string:
    return type_in_db

最佳答案

我不是很成熟的python开发人员,但为什么不简单地:

 categories = db.session.query(Bags.id) \
.filter(Bags.type.like('%'+search_string+'%'))\
.all()

关于mysql - SQLAlchemy子字符串过滤,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37943531/

10-11 03:22