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

Unix 데이터베이스(dbm)에 대한 Python 인터페이스

<시간/>

Python의 내장 라이브러리에 있는 dbm 패키지는 인터페이스 DBM 스타일 데이터베이스와 같은 사전을 제공합니다. dbm 라이브러리는 Ken Thompson이 작성한 간단한 데이터베이스 엔진입니다. DBM은 UNIX 운영 체제에서 사용하는 DataBase Manager의 약자로 고정된 크기의 버킷에 단일 키(기본 키)를 사용하여 임의의 데이터를 저장하고 키별로 데이터를 빠르게 검색할 수 있도록 해싱 기술을 사용합니다.

dbm 패키지 −

에 다음 모듈이 있습니다.

dbm.ndbm 모듈은 Unix "(n)dbm" 라이브러리에 대한 인터페이스를 제공합니다. Dbm 객체는 사전처럼 작동하며 키와 값은 바이트로 저장해야 합니다. 모듈은 항목() 및 값() 메서드를 지원하지 않습니다.

dbm.dumb 모듈은 완전히 Python으로 작성된 영구 사전과 유사한 인터페이스를 제공합니다. dbm.gnu와 같은 다른 모듈과 달리 외부 라이브러리가 필요하지 않습니다. 다른 영구 매핑과 마찬가지로 키와 값은 항상 바이트로 저장됩니다.

이러한 모듈은 Python의 선반 모듈에서 내부적으로 사용됩니다. shelve 데이터베이스의 경우와 마찬가지로 사용자 지정 데이터베이스 이름에는 '.dir' 접미사가 붙습니다. dbm 객체의 whichdb() 함수는 현재 Python 설치에서 사용할 수 있는 dbm 구현을 알려줍니다.

>>> dbm.whichdb('mydbm.db')

'dbm.dumb'

>>> db = dbm.open('mydbm.db','n')
>>> db['name'] = Rajani Deshmukh'
>>> db['address'] = 'Shivajinagar Pune'
>>> db['PIN'] = '431001'
>>> db.close()

open() 함수는 이러한 플래그를 모드로 허용합니다 -

의미
'r'
읽기 전용으로 기존 데이터베이스 열기(기본값)
'w'
읽기 및 쓰기를 위해 기존 데이터베이스 열기
'c'
읽기 및 쓰기용 데이터베이스 열기, 존재하지 않는 경우 생성
'n'
항상 읽기 및 쓰기를 위해 열려 있는 비어 있는 새 데이터베이스 생성

dbm 개체는 선반 개체와 마찬가지로 개체와 같은 사전입니다. 따라서 모든 사전 작업을 수행할 수 있습니다. dbm 객체는 get(),pop(), append(0 및 update() 메서드를 호출할 수 있습니다. 다음 코드는 'r' 플래그가 있는 'mydbm.db'를 열고 키-값 쌍의 컬렉션을 반복합니다.

>>> db = dbm.open('mydbm.db','r')
>>> for k,v in db.items():
print (k,v)
b'name' : Rajani Deshmukh'
b'address' : b'Shivajinagar Pune'
b'PIN' : b'431001'

dbm 객체는 또한 다음 메소드를 제공합니다 -

동기화(): 디스크 상의 디렉터리와 데이터 파일을 동기화합니다. 이 메서드는 Shelve.sync() 메서드에 의해 호출됩니다.

닫기(): dbm 데이터베이스를 닫습니다.

gnu dbm 객체에는 다음과 같은 방법이 있습니다 -

첫 번째 키()

이 메서드와 nextkey() 메서드를 사용하여 데이터베이스의 모든 키를 반복할 수 있습니다. 이 메서드는 시작 키를 반환합니다.

gdbm .nextkey(키): 순회에서 키 다음에 오는 키를 반환합니다.

gdbm .reorganize(): 이 기능은 데이터베이스를 재구성합니다. gnu dbm 객체는 이 재구성을 사용하는 경우를 제외하고 데이터베이스 파일의 길이를 줄이지 않습니다. 그렇지 않으면 삭제된 파일 공간이 유지되고 새로운 (키, 값) 쌍이 추가될 때 재사용됩니다.