2013-04-26 11 views
5

Il modulo shelve è implementato sopra il modulo anydbm. Questo modulo funge da facciata per 4 diverse implementazioni DBM specifici, e si riprenderà il primo modulo disponibile quando si crea un nuovo database, nel seguente ordine:Come posso forzare Python a utilizzare il modulo dumbdbm per creare un nuovo database?

  • dbhash (deprecato, ma ancora la prima anydbm scelta). Questo è un proxy per il modulo bsddb, .open() è davvero bsddb.hashopen()

  • gdbm, modulo Python per la libreria GNU DBM, che offre più funzionalità rispetto al modulo dbm può offrire quando viene utilizzato con la stessa libreria.

  • dbm, un modulo di delega utilizzando il ndbm, BSD DB e GNU DBM librerie (scelto quando Python viene compilato).

  • dumbdbm, un'implementazione pure-python.

Ma nel mio sistema anche se ho dbhash per qualche motivo lo voglio per creare il db con il solo dumbdbm.

Come posso ottenere quello?

+0

Per interessi, perché vuoi farlo? –

+0

Sto provando ad assomigliare ad un sistema. Il sistema di base crea un file db che utilizza dumbdbm e quindi utilizza tale file come input per un altro programma. Se uso altri db devo cambiare l'altro programma per leggere correttamente il nuovo file e stiamo cercando di non cambiare il codice il più lontano possibile. –

+0

Solo dumbdbm è disponibile su Windows. Se vuoi spostare i file 'shelve' tra Linux e Windows, devono usare il formato dumbdbm. –

risposta

5

Non è possibile controllare l'utilizzo dei moduli db shelve.open, ma esistono soluzioni alternative.

La cosa migliore è di solito per creare il db te stesso e passarlo a the Shelf constructor manualmente, invece di chiamare shelve.open:

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

Il primo parametro è un oggetto che fornisce un'interfaccia -come dict in grado di memorizzare le stringhe, che è esattamente ciò che è qualsiasi oggetto *dbm.

Problemi correlati