pycassa - 通过二级索引删除多行?

时间:2012-12-22 11:53:26

标签: python cassandra pycassa

我有一个带有二级索引'指针'的列族。如何删除具有相同“指针”值的多行(例如abc)?

我知道的唯一选择是:

expr = create_index_expression('pointer', 'abc')
clause = create_index_clause([expr])
for key, user in cassandra_cf.get_indexed_slices(clause):
    cassandra_cf.remove(key)

但是我知道这是非常低效的,如果我有数千行具有相同的'指针'值,可能需要很长时间。还有其他选择吗?

1 个答案:

答案 0 :(得分:0)

您可以一次删除多行:

expr = create_index_expression('pointer', 'abc')
clause = create_index_clause([expr])
with cassandra_cf.batch() as b:
    for key, user in cassandra_cf.get_indexed_slices(clause):
        b.remove(key)

这会将删除分组为100个批处理(默认情况下)。当批处理对象用作上下文管理器时,它将自动处理在with块被遗留后发送任何剩余的突变。

您可以在pycassa.batch API docs

中详细了解相关信息