CQL 过滤方法 - python

CQL filter method - python

我有以下 CQL table。

session = columns.Date(primary_key=True, partition_key=True, required=True)
entity = columns.Text(primary_key=True, partition_key=True, required=True)
broker = columns.Text(primary_key=True, required=True)
prof = columns.Text(primary_key=True, required=True)
prod = columns.Text(primary_key=True, required=True)
.... 

从 cql 引擎读取文档有一个 'filter' 方法,我可以使用它按 (session, entity) -> 分区键或任何我想要的进行过滤。

我的问题是以下问题,我想始终按 (session,entity) 以及可能的字段数量进行过滤,例如 'prof' 或 'prod' 或两者。

我执行此操作的功能如下。

def search_by(cls, entity, session, **kwargs): #entity, session, filter
        activity_summary = ActivitySummary.objects \
             .filter(entity=entity, session=session) \
             .filter(kwargs) \
             .allow_filtering()
        return cls._to_dataframe(activity_summary)

其中 **kwargs 是我的变量过滤器,我想用我的主键来过滤它的字典(例如 {'prof':'MAXIMO'})。

但它不起作用,因为它没有将字典名称与列 cql table 名称正确匹配。

有什么想法吗?谢谢

您需要在传递 kwarg 时扩展它们。

def search_by(cls, entity, session, **kwargs): #entity, session, filter
        activity_summary = ActivitySummary.objects \
             .filter(entity=entity, session=session) \
             .filter(**kwargs) \
             .allow_filtering()
        return cls._to_dataframe(activity_summary)

注意 .filter(**kwargs) 而不是 .filter(kwargs)