2012-11-27 3 views
0

CouchDB 용 파이썬 래퍼를 사용하여 데이터베이스를 업데이트하려고합니다. 이 파일은 다음과 같이 중첩 된 사전으로 구성됩니다.CouchDb-python이 문자열과 사전을 혼동하는 이유는 무엇입니까?

doc = { ..., 
    'RLSoo': {'RT_freq': 2, 'tweet': "They're going to play monopoly now. 
    This makes me feel like an excellent mother. #Sandy #NYC"}, 
    'GiltCityNYC': {}, 
    ....} 

나는 자신의 문서에 예를 RLSoo을 위해, 더 큰 dicitionary의 각 항목을 넣어 싶습니다. 그러나 다음 코드를 시도 할 때 오류 메시지가 나타납니다. CouchDB를이 사전에 동의하지 않습니다 왜 이해가 안

TypeError: expected dict, got <type 'str'> 

for key in doc: 
     db.update(doc[key],all_or_nothing=True) 

오류 메시지.

답변

1

Database.update() 방법 구현 및 그의 문서에 따르면 첫 번째 인수는 문서 개체 목록 (예 : dicts 목록)이어야합니다. doc 변수는 dict 타입을 가지고 있기 때문에 직접 반복하면 실제 문자열을 입력하는 모든 키를 반복합니다. 귀하의 사례를 올바르게 이해했다면 doc에는 중첩 된 문서가 values으로 포함되어있을 가능성이 있습니다. 그러므로 그냥 시도해보십시오 :

db.update(doc.values(), all_or_nothing=True) 

그리고 모든 첫 번째 레벨 값은 사전이어야합니다.

관련 문제