8.7 gdbm --- La version GNU de dbm

Disponibilité: Unix

Ce module est pratiquement similaire au module dbm mais il utilise gdbm comme support et fournit ainsi des fonctions supplémentaires. Il est à noter que les formats de fichiers gdbm et dbm sont incompatibles.

Le module gdbm fournit une interface à la librairie GNU DBM Les objets gdbm se comportent comme des tables associatives (dictionnaires), mis à part que les valeurs et les clefs sont toujours des chaînes de caractères. Afficher un objet gdbm n'affiche pas ses clefs et ses valeurs, et les méthodes items() et values() ne sont pas applicables.

Le module définit les constantes et fonctions suivantes:

error
Levée sur une erreur spécifique à gdbm, telles que les erreurs I/O. L'exception KeyError est levée comme pour les erreurs générales liées aux tables associatives, telle que la spécification d'une clef incorecte.

open(base, [indicateur, [mode]])
Ouvre une base gdbm et retourne un objet gdbm. Le nom baseen argument est le nom du fichier contenant la base.

L'argument optionel indicateur peut ëtre: 'r' (pour ouvrir une base existante (par défaut)), 'w' (pour ouvrir une base existante en lecture/écriture), 'c' (création de la base si celle-ci n'existe pas), ou 'n' (création systèmatique d'une base vide).

En ajoutant le caractère "f" à l'indicateur d'ouverture de base, la base est ouverte en mode fast. Les données modifiées ne sont alors pas écrites immédiatement sur disque. Ceci permet une écriture plus rapide dans la base, mais la base peut se trouver dans un état incohérent si le programme s'arrëte alors que la base est encore ouverte. Il faut utiliser la méthodesync() pour forcer l'ecriture sur disque de tout caractère non-encore pris en compte.

L'argument optionnel mode est le mode Unix du fichier, il n'est pris en compte que lors de la création de la base. Par défaut, sa valeur en octal est: 0666

En plus des fonctions traditionnelles des tables associatives, les objets gdbm ont les méthodes suivantes:

firstkey()
Cette méthode retourne la première clef de la base. Il est alors possible de parcourir la base avec cette méthode et la méthode nextkey(). Le parcours se fait suivant un ordre interne à gdbm et ne correspond pas à un tri des clefs.

nextkey(clef)
Retourne la clef suivant la clef clef dans le parcours. Le code suivant affiche toutes les clefs de la base db, sans avoir besoin d'une liste en mémoire les contenant toutes:

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

reorganize()
Cette méthode réorganise la base lorsque vous avez fait beaucoup de desctruciton et que vous voulez gagner de la place sur disque, dans le fichier gdbm. gdbm ne réduit la place disque que si vous utilisez cette méthode, sinon, l'espace libre du fichier est repris lors de la création de nouvelles paires (clef, valeur).

sync()
Quand la base et ouverte en mode fast, cette méthode force l'écriture sur disque des données.

Voir aussi:

Module anydbm:
Interface générique de type dbm.
Module whichdb:
Module utilitaire pour déterminer le type d'une base