Persistensi Data Python - Modul Rak
Modul rak di pustaka standar Python menyediakan mekanisme persistensi objek yang sederhana namun efektif. Objek rak yang ditentukan dalam modul ini adalah objek seperti kamus yang terus disimpan dalam file disk. Ini membuat file yang mirip dengan database dbm pada sistem mirip UNIX.
Kamus rak memiliki batasan tertentu. Hanya tipe data string yang dapat digunakan sebagai kunci dalam objek kamus khusus ini, sedangkan objek Python apa pun yang dapat dipilih dapat digunakan sebagai nilai.
Modul rak mendefinisikan tiga kelas sebagai berikut -
Sr Tidak | Modul & Deskripsi Rak |
---|---|
1 | Shelf Ini adalah kelas dasar untuk implementasi rak. Ini diinisialisasi dengan objek seperti dict. |
2 | BsdDbShelf Ini adalah subclass dari kelas Shelf. Objek dict yang diteruskan ke konstruktornya harus mendukung metode first (), next (), before (), last () dan set_location (). |
3 | DbfilenameShelf Ini juga merupakan subclass dari Shelf tetapi menerima nama file sebagai parameter untuk konstruktornya daripada objek dict. |
Fungsi open () didefinisikan dalam modul rak yang mengembalikan a DbfilenameShelf obyek.
open(filename, flag='c', protocol=None, writeback=False)
Parameter nama file diberikan ke database yang dibuat. Nilai default untuk parameter flag adalah 'c' untuk akses baca / tulis. Bendera lainnya adalah 'w' (hanya tulis) 'r' (hanya baca) dan 'n' (baru dengan baca / tulis).
Serialisasi itu sendiri diatur oleh protokol acar, standarnya tidak ada. Parameter writeback parameter terakhir secara default adalah false. Jika disetel ke true, entri yang diakses di-cache. Setiap akses memanggil operasi sync () dan close (), oleh karena itu prosesnya mungkin lambat.
Kode berikut membuat database dan menyimpan entri kamus di dalamnya.
import shelve
s=shelve.open("test")
s['name']="Ajay"
s['age']=23
s['marks']=75
s.close()
Ini akan membuat file test.dir di direktori saat ini dan menyimpan data nilai kunci dalam bentuk hash. Objek Shelf memiliki metode berikut ini -
Sr.No. | Metode & Deskripsi |
---|---|
1 | close() menyinkronkan dan menutup objek dikt tetap. |
2 | sync() Tulis kembali semua entri dalam cache jika rak dibuka dengan penulisan balik disetel ke True. |
3 | get() mengembalikan nilai yang terkait dengan kunci |
4 | items() daftar tupel - setiap tupel adalah pasangan nilai kunci |
5 | keys() daftar kunci rak |
6 | pop() hapus kunci yang ditentukan dan kembalikan nilai yang sesuai. |
7 | update() Perbarui rak dari dikt / iterable lain |
8 | values() daftar nilai rak |
Untuk mengakses nilai kunci tertentu di rak -
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
Seperti dalam objek kamus bawaan, metode items (), keys () dan values () mengembalikan objek tampilan.
print (list(s.items()))
[('name', 'Ajay'), ('age', 25), ('marks', 75)]
print (list(s.keys()))
['name', 'age', 'marks']
print (list(s.values()))
['Ajay', 25, 75]
Untuk menggabungkan item dari kamus lain dengan rak gunakan metode update ().
d={'salary':10000, 'designation':'manager'}
s.update(d)
print (list(s.items()))
[('name', 'Ajay'), ('age', 25), ('salary', 10000), ('designation', 'manager')]