如何在 sqlalchemy 查询过滤器中使用用户定义的 python 函数?

Posted

技术标签:

【中文标题】如何在 sqlalchemy 查询过滤器中使用用户定义的 python 函数?【英文标题】:How to use user defined python function inside a sqlalchemy query filter? 【发布时间】:2021-07-21 11:39:57 【问题描述】:

我在 python is_valid_id(id) 中有一个函数,它返回 True 或 False。 我想在过滤条件内的 sqlalchmy 查询中使用此函数。我的查询如下。

result = session.query(tableName).filter(is_valid_id(id) == True).all()

这会引发以下错误。

AttributeError: Neither 'Column' object nor 'Comparator' object has an attribute 'strip' 

你能告诉我如何在 sqlalchemy 查询中使用用户定义的函数吗?

我也尝试过使用 func 关键字。那是行不通的。

【问题讨论】:

这和pandas有关系吗? 不,这与 sqlalchemy 相关。 【参考方案1】:

现在你说的是 (True == True).all() 这没有任何作用。

您需要说出您要过滤的内容。

result = session.query(tableName).filter(tableName.columnName == condition).all()

在我看来你应该做这样的事情。 抓取所有内容,然后遍历每个对象并查看您的 id 是否返回 true。 例如:

table_objects = session.query(tableName).all()
for current_object in table_objects:
    current_id = current_object.id
    is_current_id_valid = is_valid_id(current_id)
    if is_current_id_valid:
        print(f'this id is valid: current_id')

【讨论】:

以上是关于如何在 sqlalchemy 查询过滤器中使用用户定义的 python 函数?的主要内容,如果未能解决你的问题,请参考以下文章

在 graphene-sqlalchemy 查询中按 id 过滤

如何在 SQLAlchemy 的过滤条件中传递模型参数

Flask--SQLAlchemy--基本查询备忘

SQLAlchemy Flask 过滤器查询以组合来自两个模型的结果

您如何设置 sqlalchemy 关系ihp,以便子查询负载将根据属性过滤我们的结果

SQLAlchemy - 过滤子查询负载