2012-12-22 32 views
1

我有一個二級索引'指針'的列家族。如何刪除具有相同「指針」值的多行(例如abc)?pycassa - 通過二級索引刪除多行?

我所知道的唯一的選擇是:

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) 

,但我知道這是非常低效的,如果我有數以千計的相同的「指針」值的行可能需要很長時間。還有其他選擇嗎?

回答

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瞭解更多關於此。

+0

有點(空的空間) – user1923472