我不确定我是否缺少一些基本的编程规则或使用PyCassa的一些基本规则!
问题是: 我需要查询cassandra以显示列5(列名)的所有行,其值为5.我能够在for循环中打印此结果,但不能在外部打印。 我目前的代码是:
expr2 = create_index_expression('column5', '5')
clause2 = create_index_clause([expr2], count=20)
for keyx, colx in col_fam.get_indexed_slices(clause):
print colx
这样可行,但不起作用的是:
expr2 = create_index_expression('column5', '5')
clause2 = create_index_clause([expr2], count=20)
for keyx, colx in col_fam.get_indexed_slices(clause):
t = colx
# ...
print t
我确实对某些人了解,这个问题听起来可能太儿子了......但是相信我,自上周末以来,我正在敲打这个问题,现在当我没有别的选择时,我就在Stackoverflow上了!
答案 0 :(得分:2)
在第一个示例中,每次迭代都会打印t,这会导致满足条件的每条记录占一行。在第二个中,t在每次迭代期间被替换,因此仅打印最终值。如果你只是想打印它,你可以缩进print语句,使其成为循环的一部分,虽然第一个例子可以用于它。如果要将其保存在列表中,请创建一个列表,并在每次迭代中将colx附加到它:
expr2 = create_index_expression('column5', '5')
clause2 = create_index_clause([expr2], count=20)
t=[]
for keyx, colx in col_fam.get_indexed_slices(clause):
t.append(colx)
print t
答案 1 :(得分:0)
为了扩展第一个答案,这是一种将输出OrderedDictionaries作为数组(列表)的简洁方法。
我遗漏了count=20
,因为你说你想要所有行。
expr2 = create_index_expression('column5', '5')
clause2 = create_index_clause([expr2])
output = [colx.items() for keyx, colx in col_fam.get_indexed_slices(clause2)]
或保持for循环符号,
expr2 = create_index_expression('column5', '5')
clause2 = create_index_clause([expr2])
output = []
for keyx, colx in col_fam.get_indexed_slices(clause2):
output.append (colx.items())
是的,我认为python数组(列表)使用[]表示法而不是{}。