筛选
db.table.column.like('%needle%')。还有ilike一个不区分大小写的搜索。
对于更高级的界面,您可以允许使用已知的“ 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声明式(在Flask中使用的一种),它是
Model.query.filter(Model.field.ilike(expr))



