Persistance des données Python - Module Shelve

Le module shelve de la bibliothèque standard de Python fournit un mécanisme de persistance d'objet simple mais efficace. L'objet d'étagère défini dans ce module est un objet de type dictionnaire qui est stocké de manière persistante dans un fichier disque. Cela crée un fichier similaire à la base de données dbm sur les systèmes UNIX.

Le dictionnaire d'étagère a certaines restrictions. Seul le type de données chaîne peut être utilisé comme clé dans cet objet dictionnaire spécial, tandis que tout objet Python sélectionnable peut être utilisé comme valeur.

Le module shelve définit trois classes comme suit -

Sr. Non Module Shelve et description
1

Shelf

Il s'agit de la classe de base pour les implémentations de plateau. Il est initialisé avec un objet de type dict.

2

BsdDbShelf

Ceci est une sous-classe de la classe Shelf. L'objet dict passé à son constructeur doit prendre en charge les méthodes first (), next (), previous (), last () et set_location ().

3

DbfilenameShelf

C'est aussi une sous-classe de Shelf mais accepte un nom de fichier comme paramètre pour son constructeur plutôt que comme objet dict.

La fonction open () définie dans le module shelve qui renvoie un DbfilenameShelf objet.

open(filename, flag='c', protocol=None, writeback=False)

Le paramètre de nom de fichier est affecté à la base de données créée. La valeur par défaut du paramètre d'indicateur est «c» pour l'accès en lecture / écriture. Les autres indicateurs sont 'w' (écriture seule) 'r' (lecture seule) et 'n' (nouveau avec lecture / écriture).

La sérialisation elle-même est régie par le protocole pickle, la valeur par défaut est aucune. Le dernier paramètre d'écriture différée par défaut est false. S'il est défini sur true, les entrées accessibles sont mises en cache. Chaque accès appelle les opérations sync () et close (), le processus peut donc être lent.

Le code suivant crée une base de données et y stocke les entrées de dictionnaire.

import shelve
s=shelve.open("test")
s['name']="Ajay"
s['age']=23
s['marks']=75
s.close()

Cela créera le fichier test.dir dans le répertoire actuel et stockera les données clé-valeur sous forme hachée. L'objet Shelf dispose des méthodes suivantes:

N ° Sr. Méthodes et description
1

close()

synchroniser et fermer l'objet dict persistant.

2

sync()

Réécrivez toutes les entrées du cache si l'étagère a été ouverte avec l'écriture différée définie sur True.

3

get()

renvoie la valeur associée à la clé

4

items()

liste de tuples - chaque tuple est une paire clé / valeur

5

keys()

liste des clés d'étagère

6

pop()

supprime la clé spécifiée et renvoie la valeur correspondante.

sept

update()

Mettre à jour l'étagère à partir d'un autre dict / itérable

8

values()

liste des valeurs de conservation

Pour accéder à la valeur d'une clé particulière dans l'étagère -

s=shelve.open('test')
print (s['age']) #this will print 23
   s['age']=25
print (s.get('age')) #this will print 25
s.pop('marks') #this will remove corresponding k-v pair

Comme dans un objet dictionnaire intégré, les méthodes items (), keys () et values ​​() renvoient des objets view.

print (list(s.items()))
[('name', 'Ajay'), ('age', 25), ('marks', 75)]  

print (list(s.keys()))
['name', 'age', 'marks']

print (list(s.values()))
['Ajay', 25, 75]

Pour fusionner des éléments d'un autre dictionnaire avec une étagère, utilisez la méthode update ().

d={'salary':10000, 'designation':'manager'}
s.update(d)
print (list(s.items()))

[('name', 'Ajay'), ('age', 25), ('salary', 10000), ('designation', 'manager')]