不区分大小写的Flask-SQLAlchemy查询 [英] Case Insensitive Flask-SQLAlchemy Query

查看:208
本文介绍了不区分大小写的Flask-SQLAlchemy查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用Flask-SQLAlchemy从用户的数据库中查询;然而,

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

会返回

 < User u'ganye'> 





 <$首先()



(c $ c> user = models.User.query.filter_by(username =GANYE

返回

  None 

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

 < User u'ganye'> 


解决方案

您可以使用 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 ))


I'm using Flask-SQLAlchemy to query from a database of users; however, while

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

will return

<User u'ganye'>

doing

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

returns

None

I'm wondering if there's a way to query the database in a case insensitive way, so that the second example will still return

<User u'ganye'>

解决方案

You can do it by using either the lower or upper functions in your filter:

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

Another option is to do searching using ilike instead of like:

.query.filter(Model.column.ilike("ganye"))

这篇关于不区分大小写的Flask-SQLAlchemy查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆