41 lines
995 B
Python
41 lines
995 B
Python
# persistence/shelf.py
|
|
import shelve
|
|
|
|
|
|
class Person:
|
|
def __init__(self, name, id):
|
|
self.name = name
|
|
self.id = id
|
|
|
|
|
|
with shelve.open('shelf1.shelve') as db:
|
|
db['obi1'] = Person('Obi-Wan', 123)
|
|
db['ani'] = Person('Anakin', 456)
|
|
db['a_list'] = [2, 3, 5]
|
|
db['delete_me'] = 'we will have to delete this one...'
|
|
|
|
print(list(db.keys())) # ['ani', 'delete_me', 'a_list', 'obi1']
|
|
|
|
del db['delete_me'] # gone!
|
|
|
|
print(list(db.keys())) # ['ani', 'a_list', 'obi1']
|
|
|
|
print('delete_me' in db) # False
|
|
print('ani' in db) # True
|
|
|
|
a_list = db['a_list']
|
|
a_list.append(7)
|
|
db['a_list'] = a_list
|
|
|
|
print(db['a_list']) # [2, 3, 5, 7]
|
|
|
|
|
|
# this way allows writeback:
|
|
# working with lists is easier, but consumes more memory and
|
|
# closing the file takes longer.
|
|
with shelve.open('shelf2.shelve', writeback=True) as db:
|
|
db['a_list'] = [11, 13, 17]
|
|
db['a_list'].append(19) # in-place append!
|
|
|
|
print(db['a_list']) # [11, 13, 17, 19]
|