Пример работы с данными, представляющими собой таблицу базы данных

Программа загружает данные из файла такого формата, где первое поле — это уникальный ключ:

pr.v|Vasil Vas|30.11.1976|34.5|8
mg.s|Kosin Stepa|08.03.1973|40.1|7
el.p|Pier Pety|16.07.1985|30.8|8

В программе данные хранятся в виде словаря, у которого значения ключей представлены списками с четырьмя элементами.

Пользователь может просматривать содержимое словаря, добавлять новые элементы, удалять целые элементы. Правка значений в программе не предусмотрена.

В конце данные можно записать в файл.

Можно было по-другому организовать работу с данными. Открывать файл на чтение и просматривать его построчно. Однако при этом организовать последующую запись в файл было бы сложнее.

Расширить программу можно за счет введения «режима edit», когда вручную (не в диалоговом режиме) можно править поля элементов словаря. Элементы словаря по сути являются записями.

def adder():
    key = input('Key: ')
    if len(key) != 4 or key[2] != '.': # пример защиты от ошибок ввода
        return 'Error format'
    names = input(base_field[0] + ': ')
    birth = input(base_field[1] + ': ')
    salary = input(base_field[2] + ': ')
    salary = float(salary)
    grade = input(base_field[3] + ': ')
    grade = int(grade)
    #####################################################
    base[key] = [names, birth, salary, grade]
 
def shower():
    for i in base:
        print(i + ': ' + base[i][0] + ', '+ base[i][1] + ', ' + \
              str(base[i][2]) + ', ' + str(base[i][3]))
 
def deleter():
    key = input('Key: ')
    del base[key]
 
def writer(fname):
    save = input ('Сохранить изменения? (y - да) ')
    if save == 'y':
        if fname == '':
            fname = input ('Адрес/имя: ')
        ffile = open(fname,  'w')
        for i in base:
            a = base[i]
            ffile.write(i+'|')
            ffile.write(a[0]+'|')
            ffile.write(a[1]+'|')
            ffile.write(str(a[2])+'|')
            ffile.write(str(a[3]) + '\n')
        close(fname)
 
base = {}
base_field = ('Name','Birthday','Salary','Grade') # название полей базы данных
 
# загрузка  данных из файла
anw_load = input ('Загрузить данные из файла? (y - да) ')
fname = ''
if anw_load == 'y':
    fname = input ('Адрес/имя: ')
    ffile = open(fname, 'r')
    for i in ffile:
        lst = i.split('|')
        base[lst[0]] = [lst[1], lst[2], float(lst[3]), int(lst[4])]
    close(fname)
 
while 1:
    anw = input('What do you want? (a - add, s - see, d - delete) ')
    if anw == 'end':
        writer(fname)
        break
    elif anw == 'a':
        adder()
    elif anw == 's':
        shower()
    elif anw == 'd':
        deleter()
    else:
        print('Error!')

  Использование Tkinter в Python: Создание GUI-программ
Оцените статью
( Пока оценок нет )
Поделиться с друзьями
Python для начинающих
Подписаться
Уведомить о
guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x