SQLAlchemy查询,其中列包含子字符串
我正在使用SQLAlchemy和SQLite3构建查询,其中我想选择其中String列包含特定子字符串的行。做到这一点的最佳方法是什么?
回答:
筛选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))
以上是 SQLAlchemy查询,其中列包含子字符串 的全部内容, 来源链接: utcz.com/qa/430019.html