8.7 gdbm -- Reinterpretazione GNU di dbm

Disponibilità: Unix.

Questo modulo è piuttosto simile a dbm, ma utilizza al suo posto gdbm per fornire qualche funzionalità aggiuntiva. Notate che i formati dei file creati da gdbm e dbm sono incompatibili.

Il modulo gdbm fornisce un'interfaccia per la libreria GNU DBM. Gli oggetti gdbm si comportano come mappe (dizionari), tranne per il fatto che chiavi e valori sono sempre stringhe. Stampando un oggetto gdbm non vengono stampati chiavi e valori, ed i metodi items() e values() non vengono supportati.

Il modulo definisce le seguenti costanti e funzioni:

exception error
Solleva un errore specifico gdbm, come un errore di I/O. In caso di errori generali di mappatura, come lo specificare un chiave non corretta, viene sollevata un'eccezione KeyError.

open( filename, [flag, [mode]])
Apre un database gdbm e restituisce un oggetto gdbm. L'argomento filename è il nome del file del database.

L'argomento facoltativo flag può essere 'r' (per aprire un database esistente in sola lettura -- predefinito), 'w' (per aprire un database esistente in lettura e scrittura), 'c' (per creare un database se non esiste) o 'n' (che crea sempre un nuovo database vuoto).

I seguenti caratteri addizionali possono essere inseriti a seguito dell'opzione per controllare in che modo il database venga aperto:

Non tutte le opzioni sono valide per tutte le versioni di gdbm. La costante di modulo open_flags è una stringa contenente i caratteri delle opzioni supportate. Viene sollevata l'eccezione error nel caso venga specificata un'opzione non valida.

L'argomento facoltativo mode rappresenta la modalità Unix del file, usata solamente quando il database deve essere creato. Il valore predefinito in ottale è 0666.

In aggiunta ai soliti metodi tipici di un dizionario, gli oggetti gdbm possiedono i seguenti metodi:

firstkey( )
È possibile iterare su ogni chiave nel database usando questo metodo ed il metodo nextkey(). Il risultato viene ordinato a seconda dei valori interni di hash di gdbm, e non verranno ordinati secondo il valore delle chiavi. Questo metodo restituisce la chiave di partenza.

nextkey( key)
Restituisce la chiave che segue la chiave key nel risultato. Il codice seguente stampa ogni chiave nel database db, senza dover creare una lista in memoria che le contenga tutte:

k = db.firstkey()
while k != None:
    print k
    k = db.nextkey(k)

reorganize( )
Se avete eseguito molte cancellazioni e vorreste restringere lo spazio usato dal file gdbm, questa procedura riorganizzerà il database. gdbm non diminuirà la dimensione di un file database, se non tramite l'utilizzo di questa riorganizzazione; altrimenti, lo spazio cancellato dal file verrà preso e riutilizzato al momento dell'aggiunta di nuove coppie (chiave,valore).

sync( )
Quando il database è stato aperto in modalità veloce, questo metodo forzerà la scrittura su disco di ogni dato modificato.

Vedete anche:

Modulo anydbm:
Interfaccia generica ai database in stile dbm.
Modulo whichdb:
Un modulo utile da utilizzare per determinare il tipo di un database esistente.
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.