Computer >> Máy Tính >  >> Lập trình >> Python

Đối tượng Python tồn tại (giá đỡ)

Mô-đun giá đỡ trong thư viện chuẩn của Python là một công cụ đơn giản nhưng hiệu quả để lưu trữ dữ liệu liên tục khi không cần sử dụng giải pháp cơ sở dữ liệu quan hệ. Đố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. Chỉ kiểu dữ liệu chuỗi mới có thể được sử dụng làm khóa trong đối tượng từ điển đặc biệt này, trong khi bất kỳ đối tượng có thể chọn nào cũng có thể dùng làm giá trị.

Mô-đun giá đỡ xác định ba lớp như sau -

Sr.No. Mô-đun &Mô tả
1 Giá
Đâ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.

Cách dễ nhất để tạo đối tượng Shelf là sử dụng hàm open () được định nghĩa trong mô-đun giá đỡ trả về đối tượng DbfilenameShelf.

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’ cho quyền 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)

Tham số giao thức biểu thị tham số ghi lại giao thức pickle 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.

Đoạn 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 nhập trong bộ nhớ cache nếu giá được mở với ghi lại được đặt thành Đúng.
3 get ()
trả về giá trị được liên kết với khóa
4 mục ()
danh sách các bộ giá trị - mỗi bộ giá trị là cặp giá trị khóa
5 các phím ()
danh sách các 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
8 giá trị ()
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')
>>> s['age']
23
>>> s['age']=25
>>> s.get('age')
25

Các phương thức items (), key () và giá trị () trả về các đối tượng dạng xem.

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

Để xóa cặp khóa-giá trị khỏi giá

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

Lưu ý rằng cặp khóa-giá trị của dấu-75 đã bị xóa.

Để hợp nhất các mục của từ điển khác với phương thức update () trên kệ

>>> d={'salary':10000, 'designation':'manager'}
>>> s.update(d)
>>> list(s.items())
[('name', 'Ajay'), ('age', 25), ('salary', 10000), ('designation', 'manager')]

Trong bài viết này, chúng ta đã tìm hiểu về mô-đun giá đỡ cung cấp cơ chế thuận tiện để lưu trữ đối tượng từ điển liên tục.