我试图弄清楚如何将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()
,lower()
等python命令应用于sqlalchemy
个查询的一般方法是什么?
答案 0 :(得分:3)
SQLAlchemy正在构建一个SQL表达式,而不是Python表达式。您可以使用func
对象将SQL函数应用于表达式。
from sqlalchemy import func
User.query.filter(func.lower(func.substring_index(User.name, ' ', 1)) == 'henry')