Сохранение объектов встроенных типов в хранилищах Python

sohranenie obektov vstroennyh tipov v hranilishhah python Базы данных и постоянное хранение

Запустим интерактивный сеанс и поэкспериментируем с интерфейсами хранилищ. Как уже отмечалось, хранилища, по сути, являются постоянно хранимыми словарями объектов, которые необходимо открывать и закрывать:

C:\\PP4E\Dbase> python

>>> import shelve

>>> dbase = shelve.open("mydbase")

>>> object1 = [‘The’, ‘bright’, (‘side’, ‘of’), [‘life’]]

>>> object2 = {‘name’: ‘Brian’, ‘age’: 33, ‘motto’: object1}

>>> dbase[‘brian’] = object2

>>> dbase[‘knight’] = {‘name’: ‘Knight’, ‘motto’: ‘Ni!’}

>>> dbase.close()

Здесь мы открываем хранилище и сохраняем две довольно сложных структуры данных в виде словаря и списка, просто присваивая их ключам хранилища. Поскольку модуль shelve внутренне использует модуль pickle, здесь можно использовать почти все — деревья вложенных объектов автоматически сериализуются в строки для хранения. Чтобы загрузить их обратно, достаточно просто открыть хранилище и обратиться к индексу:

C:\\PP4E\Dbase> python

>>> import shelve

>>> dbase = shelve.open("mydbase")

>>> len(dbase) # количество записей

2

>>> dbase.keys() # индекс

KeysView(<shelve.DbfilenameShelf object at 0x0181F630>)

>>> list(dbase.keys()) [‘brian’, ‘knight’]

>>> dbase[‘knight’] # извлечь

{‘motto’: ‘Ni!’, ‘name’: ‘Knight’}

>  >> for row in dbase.keys(): # использовать метод .keys() необяз.

print(row, ‘=>’)

for field in dbase[row].keys():

print(‘ ‘, field, ‘=’, dbase[row][field])

brian =>

motto = [‘The’, ‘bright’, (‘side’, ‘of’), [‘life’]] age = 33 name = Brian

knight => motto = Ni! name = Knight

Вложенные друг в друга циклы в конце этого сеанса выполняют обход вложенных словарей — внешний просматривает хранилище, а внутренний — объекты, хранящиеся в нем (в обоих можно было бы использовать итераторы по ключам и опустить вызовы .keys()). Важно отметить, что для записи и выборки этих постоянных объектов, так же как для их обработки после загрузки, используется обычный синтаксис Python. Это данные Python, постоянно хранящиеся на диске.

Использованная литература:

Марк Лутц — Программирование на Python, 4-е издание, II том, 2011

Каталог сайтов Всего.ру
Оцените статью
Секреты программирования
Добавить комментарий