2010-05-17 7 views

답변

1

왜 키를 문자열로 변환하지 않습니까? 숫자 키는이 작업을 쉽게 수행 할 수 있어야합니다.

0

[] 연산자를 오버로드하려고한다고 생각합니다. __getitem__ 메소드를 정의하여이를 수행 할 수 있습니다.

1

모든 키와 모든 값을 즉석에서 (pickle 또는 cPickle을 통해 shelve.py처럼) 직렬화 할 수 있습니다. 거의 모든 메소드를 서브 클래스 화해야하기 때문에 shelve.Shelf을 서브 클래 싱하는 것은 가치가 없습니다. 한 번만, shelve.py을 자신의 모듈에 복사하여 편집하는 것이 좋습니다. 이것은 기본적으로 새로운 모듈을 처음부터 코딩하는 것과 비슷하지만 실제 구조와 지침을 보여주는 예제가 있습니다.

sqlite은 충분히 일반적인 경우 (키가 예를 들어 임의의 튜플이 될 수 있고 모든 항목에 대해 유형이 다르며 유형이 다를 수 있음) 실제 이점이 없습니다. 키를 직렬화하여 균질하게 만들어야합니다 . 그래도 sqlite을 사용하는 것을 멈추게하는 것은 없습니다. 여러 개의 "일반화 된 선반"을 하나의 파일 (동일한 sqlite DB의 서로 다른 테이블)로 유지하려면 성능에 신경 쓰면 각 방향으로 측정해야합니다.

0

을 서브 클래스 화하여 결국 shelve-module에서 가져 왔습니다. 필자는 비 문자열 키를 자동으로 문자열 키로 변환하고 쿼리 할 때 원래 형식으로 반환하는 선반을 만들었습니다. 파이썬의 표준 불변 객체 인 int, float, string, tuple, boolean에서 잘 작동합니다.

https://github.com/North-Guard/simple_shelve

관련 문제