2015-06-03 70 views
1

我想弄清楚如何将Python代码(如分割列表)应用到sqlalchemy过滤器。一个示例如下所示:我的数据库将全名作为字段存储在表中。我想查询我的数据库中所有具有给定名字的人。因此,我想要做的是一样的东西:应用Python代码到sqlalchemy过滤器

User.query.filter(User.name.split()[0].lower() == 'henry'.lower()) 

当我尝试运行此查询,我得到的错误:

AttributeError: Neither 'InstrumentedAttribute' object nor 'Comparator' object associated with User.name has an attribute 'split' 

什么是应用就像split() Python命令的一般方式,lower()等我的sqlalchemy查询?

回答

3

SQLAlchemy正在构建一个SQL表达式,而不是Python表达式。您可以使用func对象将SQL函数应用于表达式。

from sqlalchemy import func 
User.query.filter(func.lower(func.substring_index(User.name, ' ', 1)) == 'henry')