Here is the original code
import shelve
import string
UNKNOWN = 0
HOME = 1
WORK = 2
FAX = 3
CELL = 4
class phoneentry:
def __init__(self, name = 'Unknown', number = 'Unknown', type = UNKNOWN):
self.name = name
self.number = number
self.type = type
# create string representation
def __repr__(self):
return ('%s:%d' % (self.name, self.type))
# fuzzy compare or two items
def __cmp__(self, that):
this = string.lowe(str(self))
that = string.lower(that)
if string.find(this, that) >= 0:
return (0)
return (cmp(this, that))
def showtype(self):
if self.type == UNKNOWN: return ('Unknown')
if self.type == HOME: return ('Home')
if self.type == WORK: return ('Work')
if self.type == FAX: return ('Fax')
if self.type == CELL: return ('Cellular')
class phonedb:
def __int__(self, dbname = 'phonedata'):
self.dbname = dbname;
self.shelve = shelve.open(self.dbname);
def __del__(self):
self.shelve.close()
self.shelve = None
def add(self, name, number, type = HOME):
e = phoneentry(name, number, type)
self.shelve[str(e)] = e
def lookup(self, string):
list = []
for key in self.shelve.keys():
e = self.shelve[key]
if cmp(e, string) == 0:
list.append(e)
return (list)
# if not being loaded as a module, run a small test
if __name__ == '__main__':
foo = phonedb()
foo.add('Sean Reifschneider', '970-555-1111', HOME)
foo.add('Sean Reifschneider', '970-555-2222', FAX)
foo.add('Evelyn Mitchell', '970-555-1111', HOME)
print 'First lookup:'
for entry in foo.lookup('reifsch'):
print '%-40s %s (%s)' % (entry.name, entry.number, entry.showtype())
print
print 'Second lookup:'
for entry in foo.lookup('e'):
print '%-40 %s (%s)' % (entry.name, entry.number, entry.showtype())
And I was trying to create phone record through data input. So, this is what I added:
import shelve, _bsddb
filename = 'C:/Pyhton25/phonerecord.py'
def dele(name, ptype):
key = name + ':' + ptype
db = shelve.open(filename)
try:
try:
del db[key]
print 'Entry deleted.'
except _bsddb.DBNotFoundError:
print 'No Entries with', key, 'exist!'
finally:
db.close()
b = 1
foo = phonedb()
while b != 4:
print
print "Welcome to the Phone Database"
print "Please choose from the following"
print
print "If you would like to display Phone Number(s) select 1"
print
print "If you would like to add an entry select 2"
print
print "If you would like to delete for an entry select 3"
print
print "To quit select 4 "
b = input(':')
if b == 1:
print 'Enter the lookup up key to find (For example for all names with ''Rob'' in them type Rob)'
print
a = raw_input(':')
for entry in foo.lookup(a):
print '%-40s %s (%s)' % ( entry.name, entry.number, entry.showtype() )
print
if b == 2:
print "Please enter the full name: (Example: John Smith)"
n = raw_input(':')
print "Please enter the phone number: (Example: 970-432-5432)"
p = raw_input(':')
print "Please enter the phone type: (0 = Unkown, 1 = Home, 2 = Work, 3 = Fax, 4 = Cell)"
t = raw_input(':')
if t == '0':
foo.add(n, p, UNKNOWN)
if t == '1':
foo.add(n, p, HOME)
if t == '2':
foo.add(n, p, WORK)
if t == '3':
foo.add(n, p, FAX)
if t == '4':
foo.add(n, p, CELL)