2013-04-26 5 views
5

shelve 모듈은 anydbm 모듈 위에 구현됩니다. 이 모듈은 4 가지 특정 DBM 구현을위한 외관 역할을하고, 다음과 같은 순서로, 새 데이터베이스를 만들 때 사용할 첫 번째 모듈을 선택합니다 :파이썬이 dumbdbm 모듈을 사용하여 강제로 새 데이터베이스를 만들 수 있습니까?

  • dbhash bsdhash.hashopen에 (사용되지 여전히 첫번째 anydbm 선택). 이것은 bsddb 모듈에 대한 프록시, .open() 정말 bsddb.hashopen()

  • GDBM이다는 GNU DBM 라이브러리에 대한 파이썬 모듈이 동일한 라이브러리와 함께 사용할 때 제공 할 수있는 dbm 모듈보다 더 많은 기능을 제공합니다. DBM

  • 이용한 프록시 모듈 어느 ndbm, BSD DB 및 DBM GNU 라이브러리 (파이썬 컴파일되면 선택됨).

  • dumbdbm, 순수 파이썬 구현.

하지만 내 시스템의

나는 내가 그냥 dumbdbm으로 DB를 만들려면 어떤 이유로 dbhash이 있지만.

어떻게하면됩니까?

+0

관심이 있으신 분은 왜이 기능을 사용 하시겠습니까? –

+0

나는 시스템을 닮기 위해 노력하고있다. 기본 시스템은 dumbdbm을 사용하는 db 파일을 작성한 다음 해당 파일을 다른 프로그램의 입력으로 사용합니다. 다른 DB를 사용하면 다른 프로그램을 바꿔 새로운 파일을 올바르게 읽어야하며 가능한 한 코드를 변경하지 않으려 고합니다. –

+0

Windows에서만 dumbdbm을 사용할 수 있습니다. Linux와 Windows간에 'shelve'파일을 이동하려면 dumbdbm 형식을 사용해야합니다. –

답변

5

shelve.open이 사용할 db 모듈을 제어 할 수는 없지만 해결 방법이 있습니다.

가장 좋은 대신 shelve.open를 호출, DB를 직접 작성하고 수동으로 the Shelf constructor에 전달하는 것이 있습니다 :

db = dumbdbm.open('mydb') 
shelf = shelve.Shelf(db) 

첫 번째 매개 변수는 문자열을 저장할 수있는 dict -like 인터페이스를 제공하는 개체입니다, 정확히 어떤 *dbm 개체가 무엇입니까.

관련 문제