Python 표준 라이브러리의 shelve 모듈은 관계형 데이터베이스 솔루션을 사용할 필요가 없을 때 영구 데이터 저장을 위한 간단하면서도 효과적인 도구입니다. 이 모듈에 정의된 shelf 객체는 디스크 파일에 영구적으로 저장되는 사전과 같은 객체입니다. 이것은 UNIX와 같은 시스템의 dbm 데이터베이스와 유사한 파일을 생성합니다. 이 특수 사전 개체에서는 문자열 데이터 유형만 키로 사용할 수 있지만 피클 가능한 개체는 값으로 사용할 수 있습니다.
shelve 모듈은 다음과 같이 세 가지 클래스를 정의합니다. -
시니어 번호 | 모듈 및 설명 |
---|---|
1 | 선반 이것은 선반 구현을 위한 기본 클래스입니다. dict-like 객체로 초기화됩니다. |
2 | BsdDbShelf 이것은 Shelf 클래스의 하위 클래스입니다. 생성자에 전달된 dict 객체는 first(), next(), previous(), last() 및 set_location() 메서드를 지원해야 합니다. |
3 | DbfilenameShelf 이것은 또한 Shelf의 하위 클래스이지만 dict 객체가 아닌 생성자에 대한 매개 변수로 파일 이름을 허용합니다. |
Shelf 객체를 형성하는 가장 쉬운 방법은 DbfilenameShelf 객체를 반환하는 shelve 모듈에 정의된 open() 함수를 사용하는 것입니다.
open(파일 이름, 플래그 ='c', protocol=None, writeback =False)
파일 이름 매개변수는 생성된 데이터베이스에 할당됩니다.
플래그 매개변수의 기본값은 읽기/쓰기 액세스의 경우 'c'입니다. 다른 플래그는 'w'(쓰기 전용) 'r'(읽기 전용) 및 'n'(읽기/쓰기가 새로 추가됨)
프로토콜 매개변수는 기본적으로 피클 프로토콜 쓰기 저장 매개변수를 나타냅니다. true로 설정하면 액세스된 항목이 캐시됩니다. 모든 액세스는 sync() 및 close() 작업을 호출하므로 프로세스가 느릴 수 있습니다.
다음 코드는 데이터베이스를 생성하고 여기에 사전 항목을 저장합니다.
가져오기 선반 =shelve.open("test")s['name'] ="Ajay"s['age'] =23s['marks'] =75s.close()
이것은 현재 디렉토리에 test.dir 파일을 생성하고 키-값 데이터를 해시된 형태로 저장합니다. Shelf 개체에는 다음과 같은 메서드가 있습니다. -
시니어 번호 | 방법 및 설명 |
---|---|
1 | 닫기() 영구 dict 객체를 동기화하고 닫습니다. |
2 | 동기화() 쓰기 저장이 True로 설정된 선반이 열린 경우 캐시의 모든 항목을 다시 쓰기합니다. |
3 | get() 키와 관련된 값을 반환 |
4 | 항목() 튜플 목록 - 각 튜플은 키 값 쌍입니다. |
5 | 키() 선반 키 목록 |
6 | 팝() 지정된 키를 제거하고 해당 값을 반환합니다. |
7 | 업데이트() 다른 dict/iterable에서 선반 업데이트 |
8 | 값() 선반 값 목록 |
선반에 있는 특정 키의 값에 액세스하려면
>>> s=shelve.open('테스트')>>> s['나이']23>>> s['나이']=25>>> s.get('나이')25사전>items(), keys() 및 values() 메서드는 뷰 객체를 반환합니다.
>>> list(s.items())[('name', 'Ajay'), ('age', 25), ('marks', 75)]>>> list(s.keys( ))['이름', '나이', '마크']>>> list(s.values())['Ajay', 25, 75]선반에서 키-값 쌍을 제거하려면
>>> s.pop('marks')75>>> list(s.items())[('name', 'Ajay'), ('age', 25)]mark-75의 키-값 쌍이 제거되었음을 알 수 있습니다.
선반을 사용하여 다른 사전의 항목을 병합하려면 update() 메서드를 사용하십시오.
>>> d={'급여':10000, '지정':'관리자'}>>> s.update(d)>>> list(s.items())[('이름', ' 아제'), ('나이', 25), ('급여', 10000), ('지정', '관리자')]이 기사에서는 영구 사전 객체를 저장하기 위한 편리한 메커니즘을 제공하는 선반 모듈에 대해 배웠습니다.