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.filterdb.table.columnSQLSoup(如果数据库是由另一个应用程序创建的,则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

回到顶部