2015-06-03 75 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')