Flask-SQLAlchemy 查询如何不区分大小写?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (16)

我正在使用Flask-SQLAlchemy从用户数据库中查询;但是,

user = models.User.query.filter_by(username="ganye").first()

返回

<User u'ganye'>

然后

user = models.User.query.filter_by(username="GANYE").first()

返回

None

我想知道是否有一种方法可以以不区分大小写的方式查询数据库,以便第二个示例仍然返回

<User u'ganye'>
提问于
用户回答回答于

您可以使用lowerupper过滤器中的函数:

from sqlalchemy import func
user = models.User.query.filter(func.lower(User.username) == func.lower("GaNyE")).first()

另一种选择是使用ilike而不是like:

.query.filter(Model.column.ilike("ganye"))
用户回答回答于

查询将:

user = models.User.query.with_entities(models.User.username).\
filter(models.User.username.ilike("%ganye%")).all()

上面的示例非常有用,如果您需要使用Flask的jsonify来实现Ajax,然后在您的javascript中使用数据结果:

from flask import jsonify
jsonify(result=user)

扫码关注云+社区