在 sqlalchemy python 中构建动态过滤器 [英] build dynamic filters in sqlalchemy python
本文介绍了在 sqlalchemy python 中构建动态过滤器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要使用动态列及其值动态生成/构建 sqlalchemy 查询.
I need to generate/build sqlalchemy query dynamically using dynamic columns and their values.
示例 -我在 SQL 中有一个名为Convo"的表,它包含诸如 - UserID、ConvoID、ConvoID 之类的列.
Example - I have a table in SQL called "Convo" and it has columns like - UserID, ConvoID, ContactID.
我需要根据以下条件获取行.
I need to get rows based on the below criteria.
criteria = (('UserID', 2), ('ConvoID', 1) ,('ContactID', 353))
我为此使用了烘焙查询"逻辑.但是有些我无法成功运行此查询.
I have used "Baked query" logic for this. But Some how I am not able to run this query successfully.
下面是我的代码.
criteria = (('UserID', 2), ('ConvoID', 1) ,('ContactID', 353))
baked_query = bakery(lambda session: session.query(tablename))
for key1 in condition:
baked_query += lambda q: q.filter(tablename.key1 == condition[key1])
result = baked_query(self.session).all()
我收到错误 -
AttributeError: type object 'Convo' has no attribute 'key1'
请帮我解决这个问题
推荐答案
criteria = (('UserID', 2), ('ConvoID', 1) ,('ContactID', 353))
query = session.query(tablename)
for _filter, value in criteria:
query = query.filter(getattr(tablename, _filter) == value)
result = query.all()
这篇关于在 sqlalchemy python 中构建动态过滤器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文