2015-01-16 6 views
3

저는 cqlengine을 사용하여 파이썬에서 Cassandra와 작업하기 시작했습니다.CqlEngine - sync_table() KeyError : 'cqlengine'

나는이 link 다음 시도하고 노력이 스크립트 실행 :

from cqlengine import columns 
from cqlengine import Model 
from cqlengine import connection 

from cqlengine.management import sync_table 

import uuid 


class ExampleModel(Model): 
    example_id = columns.UUID(primary_key=True, default=uuid.uuid4) 
    example_type = columns.Integer(index=True) 
    created_at = columns.DateTime() 
    description = columns.Text(required=False) 


connection.setup(['127.0.0.1'], 'cqlengine') 

sync_table(ExampleModel) 

을하지만이 오류 던졌습니다 :

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/home/zopper/Desktop/django-cassandra/local/lib/python2.7/site-packages/cqlengine/management.py", line 92, in sync_table 
    keyspace = cluster.metadata.keyspaces[ks_name] 
KeyError: 'cqlengine' 

pip freeze은 다음과 같습니다

Django==1.7.3 
argparse==1.2.1 
blist==1.3.6 
cassandra-driver==2.1.3 
cqlengine==0.21.0 
django-cassandra-engine==0.2.1 
djangotoolbox==1.6.2 
futures==2.2.0 
six==1.9.0 
wsgiref==0.1.2 

는 제발 도와주세요 이 문제를 이해하고 해결하십시오. 감사합니다. .

답변

4

이 내 말에 간과 : 다음은 0.21에서 create_keyspace의 선언입니다. create_missing_keyspace는 거의 "옳은 일을 할 것"이 아니며 잘못된 매개 변수로 생성 된 키 공간을 수정하는 것은 매우 어렵고 시간이 오래 걸립니다. 이제 원하는 매개 변수로 키 공간을 명시 적으로 작성해야합니다. 형식 오류에 파일 " ", 라인 1 : 역 추적 (마지막으로 가장 최근 통화) : 문서가 기능을 보여주고 있지만

+0

그래서 소스에서 패키지를 다시 설치합니까? GitHub에서? –

+1

create_keyspace()를 사용하여 수동으로 키 공간을 생성해야합니다. sync_table의 create_missing_keyspace 인수가 없어졌습니다. 나는 readme를 업데이트했다 : https://github.com/cqlengine/cqlengine/blob/master/README.md –

+0

그래, 고마워. 나는 그것을 알아 냈다. :) –

1

편집 :은 cqlengine 0.21에서는 무시되지만 0.20에서는 무시됩니다. cqlengine 또는 수동 생성 (아래 참조) 버전 < 0.21을 사용해보십시오.

cqlengine.management.create_keyspace("cqlengine", replication_factor=1, strategy_class="SimpleStrategy") 

가능한 전략 SimpleStrategyNetworkTopologyStrategy 있습니다

키 스페이스 like this을 만듭니다.

0.21에 대한 업데이트 된 문서를 찾을 수 없어 the source을 확인했습니다. - 지금 그것을 고정하고있어

def create_keyspace(name, strategy_class, replication_factor, durable_writes=True, **replication_values): 
    """ 
    creates a keyspace 
    :param name: name of keyspace to create 
    :param strategy_class: keyspace replication strategy class 
    :param replication_factor: keyspace replication factor 
    :param durable_writes: 1.2 only, write log is bypassed if set to False 
    :param **replication_values: 1.2 only, additional values to ad to the replication data map 
    """ 
+0

하나의 인수'name', 나는이 오류가 무엇입니까 소요 create_keyspace() 적어도 3 개의 인수 (주어진 1) –

+0

또한'sync_table (ExampleModel, create_missing_keyspace = True)'시도했지만 동일한 오류가 발생합니다. 그리고 문서에 따르면'create_missing_keyspace = True'가 기본값입니다. –

+0

그래, 나는 지금 약간의 자료를 읽고 문서가 혼란 스럽다. 특히 그것은 구식이기 때문에 특히 :) –