我正在使用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'>
答案 0 :(得分:158)
您可以使用过滤器中的lower
或upper
功能来执行此操作:
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"))
答案 1 :(得分:9)
答案 2 :(得分:1)
可以做到
user = db.session.query(User).filter_by(func.lower(User.username)==func.lower("GANYE")).first()
或者您可以使用ilike函数
user = db.session.query(User).filter_by(User.username.ilike("%ganye%")).first()