2012-10-22 3 views
0

a really simple API을 수행하여 Python 용 SPORE 클라이언트 생성을 테스트합니다.Python으로 RedisDict를 어떻게해야합니까?

WSGI에서 서버를 통해 데이터를 유지하는 가장 좋은 방법은 무엇입니까?

import json 
from redis import Redis 
redis = Redis() 

class RedisDict: 
    """A redis based dict.""" 

    def dict(self): 
     TODOS = redis.get('TODOS') 
     return json.loads(TODOS) 

    def keys(self): 
     return self.dict().keys() 

    def __getitem__(self, key): 
     return self.dict()[key] 

    def __setitem__(self, key, value): 
     obj = self.dict() 
     obj[key] = value 
     redis.set('TODOS', json.dumps(obj)) 

    def __delitem__(self, key): 
     obj = self.dict() 
     del obj[key] 
     redis.set('TODOS', json.dumps(obj)) 

todos = RedisDict() 

가 어떻게이 DICT을 반환 dict(todos)을 만들 수 있습니다

은 내가 RedisDict 그런 식으로 만들려고? WSGI 환경이면 충분합니까?

+0

가 레디 스 내부로 저장 "TODOS"무엇입니까? 해시? – Anorov

+0

아직 해시이어야합니다. – Natim

답변

1

은하지 왜 사전을 반환 dict 그 방법을 가정 이 :

dict_i_wanted = todos.dict() 

당신이 dict_i_wanted = dict(todos) 다음이 방법 추가 지원해야하는 경우 :

def __iter__(self): 
    return self.dict().iteritems() 
0

자신의 "dict-"클래스를 만들고 싶다면 사전 프로토콜을 구현해야합니다. 가장 쉬운 방법은 collections.Mapping에서 상속 받아 테이블에 추상화 된 메소드를 구현하는 것입니다. 해당하는 dict 메서드와 동일하게 동작하도록 구현해야합니다. 예 : __iter__은 모든 (key, value) 튜플에 반복 가능한 값을 반환해야합니다. (이것은 당신이 dict(todos) 작업을 내리는 데 필요한 하나의 방법입니다. 당신이 당신의 dict() 방법으로하려고 노력 같은 dict에 강요하는 마법 방법이 없습니다.)

관련 문제