Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python 객체 지속성(선반)

<시간/>

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), ('지정', '관리자')]

이 기사에서는 영구 사전 객체를 저장하기 위한 편리한 메커니즘을 제공하는 선반 모듈에 대해 배웠습니다.