Lookaside list - Test DBM
#!/usr/bin/python3
# ===================================================================
# test dbm
# ===================================================================

# ----- import the dbm package

import dbm

# ----- use the open function to create a new
# ----- database named 'mydb' in 'n' mode.

print()

db = dbm.open('mydb','n')

# ----- which dbm module (dbm.gnu, dbm.ndbm, dbm.dumb)

print(f'whichdb {dbm.whichdb("mydb")}')
print()

# ----- insert key/value pairs

db['name']      = 'Glenn Miller'
db['phone']     = 'PEnnsylvania 6-5000'
db['shortname'] = 'Glenn'
db['year']      = '1940'

# ----- get the value using the get method

print('---- get name')
print(db.get('name'))
print()

# ----- print values using value keys and key iterator

print('---- print all using value key')
for k in db.keys():
    print(db.get(k))
print()

print('---- change name')
db['name'] = 'louis Armstrong'

##db['name'] = None         # error

print('---- print all using nextkey')
k = db.firstkey()
while k is not None:
    print(db[k])
    k = db.nextkey(k)
print()

# ----- delete a key/value pair

print('---- delete phone')
del db['phone']
for k in db.keys():
    print(db.get(k))
print()

# ----- deleting all of the key/value pairs

print('---- empty database')
for k in db.keys():
    del db[k]
db.reorganize()
print(f'db count = {len(db.keys())}')

# ----- close the database

db.close()