Сохранение данных 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')]