繁体   English   中英

可以使用DataStax python cassandra-driver筛选行值吗?

[英]Possible to filter row values using DataStax python cassandra-driver?

我需要处理大约4,000个Cassandra查询。 我将每个查询ResultSet转换为一个生成器,以保持较低的内存占用量。 在生成器的每一行中,我只关心大约50个字段。

我知道我不能直接在CQL中的值字段上进行过滤,但是DataStax Python Cassandra驱动程序是否内置某些功能? 还是在构建发电机时才这样做更有意义,即

def make_gen(response):
    for row in response:
        yield row.value.field1, row.value.filed2

我目前正在发布直接查询,但是稍后将通过并发查询和预准备语句转向基于模型的方法。 发出请求的代码非常基本

sess = connect_cas(env)
for user in users:
    q = 'select * from table ' + \
        'where key1 = {} and '.format(key_1) + \
        'key2 = {} and '.format(key_2) + \
        'sample_time > {} '.format(t1) + \
        'sample_time < {} '.format(t2)
   resp_gen = make_gen(sess.execute(q)) # just a yield json.loads(Row.value)
   for resp in resp_gen:
       if field in resp:
           // process data from this field

我只关心存在该“字段”的行。 此后,我将生成器更新为仅在此条件为真时才产生数据,但是,如果DataStax驱动程序中内置了某些功能,可以更有效地执行此操作,则在4,000个查询时将节省下来的费用。

您是否显示仅处理将field1field2设置为特定值的行?

它不是专门为此目的而构建的,但是您可以使用自定义row_factory在较低级别上实现此过滤,并避免在已命名的元组,元组和其他生成器之间进行转换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM