Độ bền dữ liệu Python - Mô-đun giá đỡ

Mô-đun giá đỡ trong thư viện chuẩn của Python cung cấp cơ chế duy trì đối tượng đơn giản nhưng hiệu quả. Đối tượng kệ được định nghĩa trong mô-đun này là đối tượng giống như từ điển được lưu trữ liên tục trong tệp đĩa. Điều này tạo ra một tệp tương tự như cơ sở dữ liệu dbm trên hệ thống giống như UNIX.

Từ điển kệ có những hạn chế nhất định. Chỉ có thể sử dụng kiểu dữ liệu chuỗi làm khóa trong đối tượng từ điển đặc biệt này, trong khi bất kỳ đối tượng Python nào có thể nhặt được đều có thể được sử dụng làm giá trị.

Mô-đun giá đỡ định nghĩa ba lớp như sau:

Sr.No Mô-đun giá đỡ & Mô tả
1

Shelf

Đây là lớp cơ sở cho việc triển khai kệ. Nó được khởi tạo với đối tượng giống như dict.

2

BsdDbShelf

Đây là một lớp con của lớp Shelf. Đối tượng dict được truyền tới phương thức khởi tạo của nó phải hỗ trợ các phương thức first (), next (), before (), last () và set_location ().

3

DbfilenameShelf

Đây cũng là một lớp con của Shelf nhưng chấp nhận tên tệp làm tham số cho phương thức khởi tạo của nó chứ không phải đối tượng dict.

Hàm open () được xác định trong mô-đun giá đỡ trả về một DbfilenameShelf vật.

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

Tham số tên tệp được gán cho cơ sở dữ liệu đã tạo. Giá trị mặc định cho tham số cờ là 'c' để truy cập đọc / ghi. Các cờ khác là 'w' (chỉ ghi) 'r' (chỉ đọc) và 'n' (mới với đọc / ghi).

Bản thân quá trình tuần tự hóa được điều chỉnh bởi giao thức pickle, mặc định là không. Tham số ghi lại tham số cuối cùng theo mặc định là sai. Nếu được đặt thành true, các mục đã truy cập sẽ được lưu vào bộ nhớ đệm. Mỗi cuộc gọi truy cập hoạt động sync () và close (), do đó quá trình có thể chậm.

Mã sau tạo cơ sở dữ liệu và lưu trữ các mục từ điển trong đó.

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

Thao tác này sẽ tạo tệp test.dir trong thư mục hiện tại và lưu trữ dữ liệu khóa-giá trị ở dạng băm. Đối tượng Shelf có sẵn các phương thức sau:

Sr.No. Phương pháp & Mô tả
1

close()

đồng bộ hóa và đóng đối tượng dict liên tục.

2

sync()

Ghi lại tất cả các mục trong bộ nhớ cache nếu giá được mở với ghi lại được đặt thành True.

3

get()

trả về giá trị được liên kết với khóa

4

items()

danh sách các bộ giá trị - mỗi bộ giá trị là cặp giá trị khóa

5

keys()

danh sách chìa khóa kệ

6

pop()

loại bỏ khóa được chỉ định và trả về giá trị tương ứng.

7

update()

Cập nhật giá từ một chính sách / có thể lặp lại khác

số 8

values()

danh sách các giá trị kệ

Để truy cập giá trị của một khóa cụ thể trong giá -

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

Như trong một đối tượng từ điển dựng sẵn, các phương thức items (), key () và giá trị () trả về các đối tượng dạng xem.

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

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

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

Để hợp nhất các mục của một từ điển khác với giá sách, hãy sử dụng phương thức update ().

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

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