2010-08-04 4 views
2

Windows 컴퓨터에서 dbm 모듈을 사용하고 싶지만 현재는 Unix에서만 지원됩니다. http://docs.python.org/library/dbm.htmlWindows 용 Python DBM 모듈?

Windows에서 dmb 기능을 사용하는 유사한 구문 또는 해결 방법을 사용하는 비슷한 모듈을 아는 사람이 있습니까? 사전에 액세스하는 코드를 작성하는 것과 마찬가지로 하드 드라이브에 쓰여진 데이터베이스에 액세스 할 수 있다는 것이 좋습니다. 도와 줘서 고마워!

+0

Windows에서 cpython을 사용하고 있습니까? –

답변

3

사실, 더 주위에 인터넷 검색 후, 나는이 발견 :

+0

Windows에서 Python 2로 벤치마킹하는 경우 dbm이 [dumbdbm] (https://docs.python.org/3/library/dbm)으로 바뀌므로 Python 3로 전환 할 때 대처해야합니다. .html # module-dbm.dumb). 파이썬 2에서는 파이썬이 자체적으로 자랑스럽게 절름발이 dbm을 구현 한 반면, 더 빠른 [Berkeley DB] (https://docs.python.org/2/library/dbhash .html). Py3/Win에서 dumbdbm을 피하기 위해 [LMDB] (https://github.com/dw/py-lmdb)와 [semidbm] (https://github.com/jamesls/semidbm)을 모두 사용했습니다. , 그리고 내 자신의 해결 방법을 작성 결국, [Petite] (https://github.com/h5rdly/Petite-DB) – Jay

0

내가 Windows에서 anydbm 생각) =

http://docs.python.org/library/anydbm.html#module-anydbm

내가 창에이 시도하고 그것을 잘 작동하는 것 같군 것이다 다른 모든 모듈은 유닉스로만 보이기 때문에 dumbdbm 만로드하십시오. 파이썬 문서에 따르면 ...

"이 dumbdbm 모듈은 더 이상 강력한 모듈을 사용할 수없는 anydbm 모듈에 대한 최후의 수단 대체위한 것입니다. dumbdbm 모듈은 속도 기록되지 및하지 않다 거의 다른 데이터베이스 모듈 인 으로 많이 사용됩니다. "

2

파이썬 2.7.2를 사용하는 Windows 7 시스템에서 다음 테스트를 기반으로 dbhash가 Windows 설치에서 지원됩니다. 파이썬 3 관련성의 경우 dumbdbm 더 기쁨이 없기 때문에

import os 

import anydbm 

import whichdb 

file = os.curdir + '/testdbm' # define a test file name in the current directory 

d = anydbm.open(file, 'c')  # create a new database using the test file name 

db_type = whichdb.whichdb(file) # get the dbm database type 

print(db_type)     # display the result 

'dbhash' 
1

, 나는 외부 K-V 솔루션을 가고 싶어.

일부 순수 파이썬 옵션 :

  • semidbm - 파이썬 표준 라이브러리 만 핍 dumbdbm하고 갈 수있는 빠른 대안. 사용자들에게 이식성과 가용성을 보장하고자한다면 나는 갈 것입니다.

  • PickleDB - 데이터를 직렬화하기 위해 json을 사용합니다. Standrad 라이브러리에만, 나는 벤치마킹을하지 않았지만 직렬화 오버 헤드로 인해 semidbm보다 느린 것으로 의심된다.

  • Petite DB - 내 자신의 간단한 해결 방법은 파이썬의 zipfile 모듈을 사용하는 것입니다. 책의 기본 테스트는 생산 준비가되지 않았습니다. SQLite4 바인딩은 테스트되지 않았다 불구하고

은 또한 윈도우를 지원하는 모두 LMDB, UnQLiteSQLite4 LSM에 파이썬 래퍼가 있습니다.

후자의 두 명은 모두 k-v stores에 정통한 개발자이자 열렬한 파이썬 개발자입니다 (Peewee 참조).

LMDB에 관해서는 잠시 동안 사용해 보았습니다. 불만은 없지만 트랜잭션 모델을 사용합니다. 풀 모델을 사용하면 하위 dbm과 같은 사전 스타일을 사용할 수 없습니다. 또한 명시 적으로 doesn't utilize compression (also 참조)이었습니다. 나는에 관심이 있었다.

그래서 LMDB는 내 고유 한 요구 사항을 충족시키지 못했습니다. 그것은 매우 유능한 것으로 보이며, 바인딩은 정상적으로 작동하고, 설치는 문제가되지 않습니다. (필자에게 도움이되었으므로 별도로 LMDB를 설치할 필요가 없습니다.