Pycassa와 함께 Cassandra 칼럼 제품군에 저장된 모든 키를 어떻게 얻습니까?

StackOverflow https://stackoverflow.com/questions/2430539

  •  19-09-2019
  •  | 
  •  

문제

함께 일한 경험이있는 사람이 있습니까? Pycassa 나는 그것에 대해 의심한다. 데이터베이스에 저장된 모든 키를 어떻게 얻습니까?

이 작은 스 니펫에서 우리는 연관된 열을 얻기 위해 키를 주어야합니다 (여기서 키는 'foo'와 'bar'입니다)는 괜찮지 만 요구 사항은 모든 키 (키)를 한 번에 가져 오는 것입니다. 파이썬 목록 또는 유사한 데이터 구조로.

cf.multiget(['foo', 'bar'])
{'foo': {'column1': 'val2'}, 'bar': {'column1': 'val3', 'column2': 'val4'}}

감사.

도움이 되었습니까?

해결책

노력하다:

    list(cf.get_range().get_keys())

더 좋은 것들 : http://github.com/vomjom/pycassa

다른 팁

당신은 시도 할 수 있습니다: cf.get_range(column_count=0,filter_empty=False).

# Since get_range() returns a generator - print only the keys.
for value in cf.get_range(column_count=0,filter_empty=False):
    print value[0]

get_range([start][, finish][, columns][, column_start][, column_finish][, column_reversed][, column_count][, row_count][, include_timestamp][, super_column][, read_consistency_level][, buffer_size])

지정된 키 범위에서 반복기를 오버로 가져옵니다.

http://pycassa.github.com/pycassa/api/pycassa/columnfamily.html#pycassa.columnfamily.columnfamily.get_range

Santhosh의 솔루션에 대한 약간의 개선

dict(cf.get_range(column_count=0,filter_empty=False)).keys()

주문에 관심이있는 경우 :

OrderedDict(cf.get_range(column_count=0,filter_empty=False)).keys()

get_range는 생성기를 반환합니다. 우리는 발전기에서 DITT를 만들고 그로부터 키를 얻을 수 있습니다.

column_count = 0 row_key로 결과를 제한합니다. 그러나이 결과에는 열이 없기 때문에 Filter_Empty도 필요합니다.

filter_empty = false를 사용하면 결과를 얻을 수 있습니다. 그러나 빈 행과 레인지 유령이 현재 결과에 포함될 수 있습니다.

더 많은 오버 헤드를 신경 쓰지 않으면 첫 번째 열만 받으면 빈 행과 범위 유령이 해결됩니다.

dict(cf.get_range(column_count=1)).keys()

문제가 있습니다 산토시 그리고 Kzarns ' 당신이 기억에 남을 때, 당신이 즉시 폐기 할 수있는 잠재적으로 큰 반드시. 더 나은 접근 방식은 이것에 대한 목록 이해를 사용하는 것입니다.

keys = [c[0] for c in cf.get_range(column_count=0, filter_empty=False)]

이것은 반환 된 발전기 위에 반복됩니다 get_range, 키를 메모리에 유지하고 목록을 저장합니다.

키가 너무 커서 한 번에 메모리에 유지하기에는 키 목록을 한 번만 반복하면됩니다. 목록 이해 대신 생성기 표현식:

kgen = (c[0] for c in cf.get_range(column_count=0, filter_empty=False))
# you can iterate over kgen, but do not treat it as a list, it isn't!
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top