用db.table.column.like(‘%needle%’)过滤.还有一个不区分大小写的搜索.
对于一个爱好者界面,您可以使用已知的“dir”通配符.
if '*' in needle or '_' in needle:
looking_for = needle.replace('_', '__')\
.replace('*', '%')\
.replace('?', '_')
else:
looking_for = '%{0}%'.format(needle)
result = db.table.filter(db.table.column.ilike(looking_for))
笔记:
> db.table.filter和db.table.column是用于SQLSoup(如果数据库是由其他应用程序创建的,则为SQLSoup)>对于SQLAlchemy Core,它是select(column_list).where(table.c.column.ilike(expr)).当您想要使用原始SQL的所有功能时,此界面是无需手动组合语句的方式即可使用字符串插值(在SQLSoup中使用它进行自省,因此您不需要声明表)>对于SQLAlchemy Declarative(在Flask中使用的),它是Model.query.filter(Model.field.ilike(expr))