不区分大小写的Flask-SQLAlchemy查询
我正在使用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'>
您可以通过在filter中使用lower
或upper
函数来实现:
from sqlalchemy import func user = models.User.query.filter(func.lower(User.username) == func.lower("GaNyE")).first()
另一个select是使用ilike
search,而不是like
:
.query.filter(Model.column.ilike("ganye"))
改进@ plaes的答案,如果你只指定了你所需要的列,这个将会使查询更短:
user = models.User.query.with_entities(models.User.username).\ filter(models.User.username.ilike("%ganye%")).all()
上面的例子对于需要使用Flask的jsonify用于AJAX目的非常有用,然后在javascript中使用data.result访问它:
from flask import jsonify jsonify(result=user)