在 sqlalchemy python 中构建动态过滤器 [英] build dynamic filters in sqlalchemy python

查看:43
本文介绍了在 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆