Python Data Persistence - Raf Modülü

Python'un standart kütüphanesindeki raf modülü, basit ama etkili nesne kalıcılık mekanizması sağlar. Bu modülde tanımlanan raf nesnesi, sürekli olarak bir disk dosyasında saklanan sözlük benzeri nesnedir. Bu, UNIX benzeri sistemlerde dbm veritabanına benzer bir dosya oluşturur.

Raf sözlüğünün belirli kısıtlamaları vardır. Bu özel sözlük nesnesinde anahtar olarak yalnızca dize veri türü kullanılabilir, oysa seçilebilir herhangi bir Python nesnesi değer olarak kullanılabilir.

Raf modülü aşağıdaki gibi üç sınıfı tanımlar -

Sr.No Raf Modülü ve Tanımı
1

Shelf

Bu, raf uygulamaları için temel sınıftır. Dikte benzeri nesneyle başlatılır.

2

BsdDbShelf

Bu, Shelf sınıfının bir alt sınıfıdır. Yapıcısına iletilen dict nesnesi first (), next (), previous (), last () ve set_location () yöntemlerini desteklemelidir.

3

DbfilenameShelf

Bu aynı zamanda Shelf'in bir alt sınıfıdır, ancak bir dosya adını dikte nesnesi yerine yapıcısına parametre olarak kabul eder.

Shelve modülünde tanımlanan open () işlevi bir DbfilenameShelf nesne.

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

Dosya adı parametresi, oluşturulan veritabanına atanır. Bayrak parametresinin varsayılan değeri, okuma / yazma erişimi için 'c'dir. Diğer işaretler 'w' (sadece yazma) 'r' (salt okunur) ve 'n' (okuma / yazma ile yeni).

Serileştirmenin kendisi turşu protokolü tarafından yönetilir, varsayılan değer yoktur. Son parametre geri yazma parametresi varsayılan olarak yanlıştır. Doğru olarak ayarlanırsa, erişilen girişler önbelleğe alınır. Her erişim, sync () ve close () işlemlerini çağırır, bu nedenle süreç yavaş olabilir.

Aşağıdaki kod bir veritabanı oluşturur ve içinde sözlük girişlerini depolar.

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

Bu, geçerli dizinde test.dir dosyasını oluşturur ve anahtar / değer verilerini karma biçimde saklar. Shelf nesnesinin aşağıdaki yöntemleri vardır -

Sr.No. Yöntemler ve Açıklama
1

close()

kalıcı dikte nesnesini senkronize edin ve kapatın.

2

sync()

Geri yazma True olarak ayarlanmış şekilde raf açılmışsa önbellekteki tüm girişleri geri yazın.

3

get()

anahtarla ilişkili değeri döndürür

4

items()

demetler listesi - her demet, anahtar değer çiftidir

5

keys()

raf anahtarlarının listesi

6

pop()

belirtilen anahtarı kaldırın ve karşılık gelen değeri döndürün.

7

update()

Başka bir dikteden / yinelenebilirden rafı güncelle

8

values()

raf değerleri listesi

Raftaki belirli bir anahtarın değerine erişmek için -

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

Yerleşik bir sözlük nesnesinde olduğu gibi, items (), keys () ve values ​​() yöntemleri, view nesnelerini döndürür.

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

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

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

Başka bir sözlüğün öğelerini raf ile birleştirmek için update () yöntemini kullanın.

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

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