Изменим данный пример «базы данных» так, что объекты будут храниться в файле. Программа должна иметь возможность изменять объекты, хранящиеся в файле.
Модуль shelve позволяет сохранять объекты по ключу. Т.е. чтобы работать с объектом, сохраненным в файле, необходимо указать его ключ. Нет необходимости просматривать содержимое всего файла.
class Subject:
def __init__(self, s, i, q = 1):
self.id = i
self.name = s
self.qty = q
import shelve
f = shelve.open("learning")
l = len(f)
print ("%5s %12s %7s" % ("ID", "Предмет", "Кол-во"))
for i in f:
print("%5s %12s %7s" % (f[i].id, f[i].name, f[i].qty))
print("Вводите названия предметов")
record = input()
while record != "н":
if record in f:
f[record] = Subject(f[record].name,f[record].id,f[record].qty + 1)
else:
a = Subject(record,l+1)
l += 1
f[record] = a
record = input()
for i in f:
print("%5s %12s %7s" % (f[i].id, f[i].name, f[i].qty))
f.close()
Пример работы программы:
sv@sv-desktop ~/Документы $ python3 mouse2.py
ID Предмет Кол-во
Вводите названия предметов
химия
биология
биология
н
2 биология 2
1 химия 1
sv@sv-desktop ~/Документы $ python3 mouse2.py
ID Предмет Кол-во
2 биология 2
1 химия 1
Вводите названия предметов
черчение
алгебра
биология
н
2 биология 3
3 черчение 1
4 алгебра 1
1 химия 1
sv@sv-desktop ~/Документы $ python3 mouse2.py
ID Предмет Кол-во
2 биология 3
3 черчение 1
4 алгебра 1
1 химия 1
Вводите названия предметов