SQLAlchemy 中的查询查找

Posted

技术标签:

【中文标题】SQLAlchemy 中的查询查找【英文标题】:Query lookups in SQLAlchemy 【发布时间】:2022-01-16 12:35:09 【问题描述】:

我在 SQLAlchemy 中找不到任何关于查找 api 的信息,是否支持?

我说的是 Django ORM 中的这个特性:https://docs.djangoproject.com/en/4.0/ref/models/lookups/

这对我的情况非常有用,因为我在前端有一个带有许多过滤选项的表,而在 Django 中我可以只使用queryset.filter(**kwargs)

如果不支持,有什么办法可以实现吗?

【问题讨论】:

【参考方案1】:

在 SQLAlchemy 1.4 中,您可以执行 Query.filter_by(**kwargs),如果这是您正在寻找的。 (docs)

不知道这个 API 有没有进 2.0。

编辑: 似乎在 2.0 中他们添加了另一层抽象,现在是 Select.filter_by(**kwargs)(docs)

【讨论】:

它看起来很相似,但它只允许找到完全匹配吗?我的意思是,如果我需要过滤 some_field > 0 的位置,例如 对于布尔表达式,您可以使用Query.filter(MyClass.some_field > 0) 或更通用的Query.filter(*filter_criteria)。 (这是filter_by 正上方文档中的条目)

以上是关于SQLAlchemy 中的查询查找的主要内容,如果未能解决你的问题,请参考以下文章

SQLAlchemy:从另一个查询的结果中查找表中的所有匹配行

SQLAlchemy-ORM

python SQLAlchemy

Flask-SQLAlchemy 中的 LocalProxy 对象

SQLAlchemy模型中的进程字段(使用flask_sqlalchemy)

sqlalchemy 简单使用