Сохранение данных Python - модуль полки

Модуль полки в стандартной библиотеке Python предоставляет простой, но эффективный механизм сохранения объектов. Объект полки, определенный в этом модуле, представляет собой подобный словарю объект, который постоянно хранится в файле на диске. Это создает файл, похожий на базу данных dbm в UNIX-подобных системах.

У полочного словаря есть определенные ограничения. Только строковый тип данных может использоваться в качестве ключа в этом специальном объекте словаря, тогда как любой выбираемый объект Python может использоваться как значение.

Модуль полки определяет три класса следующим образом:

Старший Нет Модуль полки и описание
1

Shelf

Это базовый класс для реализации на полках. Он инициализируется dict-подобным объектом.

2

BsdDbShelf

Это подкласс класса Shelf. Объект dict, переданный его конструктору, должен поддерживать методы first (), next (), previous (), last () и set_location ().

3

DbfilenameShelf

Это также подкласс Shelf, но он принимает имя файла в качестве параметра своего конструктора, а не объект dict.

Функция open (), определенная в модуле полки, которая возвращает DbfilenameShelf объект.

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

Параметр имени файла присваивается созданной базе данных. Значение по умолчанию для параметра flag - "c" для чтения / записи. Другие флаги - «w» (только запись), «r» (только чтение) и «n» (новые с чтением / записью).

Сама сериализация регулируется протоколом pickle, по умолчанию нет. Последний параметр обратной записи по умолчанию имеет значение false. Если установлено значение true, записи кэшируются. Каждый доступ вызывает операции sync () и close (), поэтому процесс может быть медленным.

Следующий код создает базу данных и сохраняет в ней словарные статьи.

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

Это создаст файл test.dir в текущем каталоге и сохранит данные ключ-значение в хешированной форме. У объекта Shelf доступны следующие методы:

Sr.No. Методы и описание
1

close()

синхронизировать и закрыть постоянный объект dict.

2

sync()

Запишите обратно все записи в кеш, если полка была открыта с обратной записью, установленной на True.

3

get()

возвращает значение, связанное с ключом

4

items()

список кортежей - каждый кортеж представляет собой пару ключ-значение

5

keys()

список ключей полки

6

pop()

удалить указанный ключ и вернуть соответствующее значение.

7

update()

Обновить полку из другого словаря / итерации

8

values()

список ценностей на полке

Чтобы получить доступ к значению определенного ключа на полке -

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

Как и во встроенном объекте словаря, методы items (), keys () и values ​​() возвращают объекты представления.

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

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

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

Чтобы объединить элементы другого словаря с полкой, используйте метод update ().

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

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