0
RIAK에 저장하고있는지도 데이터 유형이 있습니다. 카운터를 포함하는지도가 거의없는지도입니다. 것 JSON 프로그램에 직렬화의 예상 출력 :RIAK - 데이터 유형 - 파이썬에서지도 사용
{
"sample_map_key" : {
"maps" : {
"Q1" : {
"counters" : {
"a1" : 10,
"a2" : 13
}
},
"Q2" : {
"counters" : {
"a1":31,
"a2":21,
"a3":10
}
}
}
}
하지만 그 대신 나는 예외를 얻고있다 : "형식 오류 : unhashable 유형 : '지도'". 도움 주셔서 감사합니다. 다음 샘플 코드는 다음과 같습니다
from riak.datatypes import Map
import riak
def main():
store_values()
read_values()
def store_values():
riak_client = riak.RiakClient(host="localhost", http_port="8087", protocol="pbc")
mapBucketType = riak.BucketType(riak_client, "maps")
maps_bucket = riak.RiakBucket(riak_client, "sample_maps_bucket", mapBucketType)
sample_map = Map(maps_bucket, "sample_map_key")
sample_map.maps["Q1"].counters["a1"].increment(10)
sample_map.maps["Q1"].counters["a2"].increment(13)
sample_map.maps["Q2"].counters["a1"].increment(31)
sample_map.maps["Q2"].counters["a2"].increment(21)
sample_map.maps["Q2"].counters["a3"].increment(10)
sample_map.store()
def read_values():
riak_client = riak.RiakClient(host="localhost", http_port="8087", protocol="pbc")
mapBucketType = riak.BucketType(riak_client, "maps")
maps_bucket = riak.RiakBucket(riak_client, "sample_maps_bucket", mapBucketType)
sample_map = Map(maps_bucket, "sample_map_key")
sample_map.reload()
results = {"sample_map_key": to_json(sample_map)}
print results
def to_json(map):
obj = {}
for m in map.maps:
if "maps" not in obj:
obj["maps"] = {}
obj["maps"][m] = to_json(map.maps[m])
for c in map.counters:
if "counters" not in obj:
obj["counters"] = {}
obj["counters"][c] = map.counters[c]
return obj
if __name__ == '__main__':
main()
전체 역 추적 :
Traceback (most recent call last): File "sampleMap.py", line 48, in <module>
main() File "sampleMap.py", line 5, in main
read_values() File "sampleMap.py", line 31, in read_values
results = {"sample_map_key": to_json(sample_map)} File "sampleMap.py", line 40, in to_json
obj["maps"][m] = to_json(map.maps[m]) File "/usr/local/lib/python2.7/dist-packages/riak/datatypes/map.py", line 26, in __getitem__
return self.map[(key, self.datatype)] File "/usr/local/lib/python2.7/dist-packages/riak/datatypes/map.py", line 171, in __getitem__
if key in self._value: TypeError: unhashable type: 'Map'
전체 오류 추적을 제공하십시오! 문제를 진단하는 것이 매우 유용합니다. –
원래 게시물에 추가됨 – Rekr