如何在 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 过滤器查询以组合来自两个模型的结果