×
Traktatov.net » Программирование на Python » Читать онлайн
Страница 35 из 625 Настройки

Шаг 2: сохранение записей на длительное время

К настоящему моменту мы остановились на представлении нашей базы данных в виде словаря и попутно рассмотрели некоторые способы реализации структур данных в языке Python. Однако, как уже упоминалось выше, объекты, с которыми мы имели дело до сих пор, - временные объекты; они располагаются в оперативной памяти и исчезают бесследно после завершения работы интерпретатора Python или программы, создавшей их. Чтобы обеспечить долговременное хранение базы данных, ее необходимо сохранить в каком-нибудь файле.


Текстовые файлы

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

Тестовый сценарий создания данных

Чтобы не продолжать дальнейшую работу в интерактивном режиме, напишем сценарий, инициализирующий базу данных, которую требуется сохранить (если вы уже имеете опыт работы с языком Python, то должны знать, что как только вы начинаете писать программный код, занимающий больше одной строки, работа в интерактивном режиме становится утомительной). Сценарий в примере 1.1 создает несколько записей и словарь базы данных, с которыми мы работали до сих пор, но так как он одновременно является модулем, мы сможем импортировать его и избавиться от необходимости всякий раз вводить программный код вручную. В некотором смысле этот модуль и является базой данных, но его реализация не поддерживает возможность изменения данных автоматически или конечным пользователем.

Пример 1.1. PP4E\Preview\initdata.py

#    инициализировать данные для последующего сохранения в файлах

#    записи

bob =    {‘name’:    ‘Bob Smith’,    ‘age’:    42,    ‘pay’:    30000,    ‘job’:    ‘dev’}

sue =    {‘name’:    ‘Sue Jones’,    ‘age’:    45,    ‘pay’:    40000,    ‘job’:    ‘hdw’}

tom =    {‘name’:    ‘Tom’,    ‘age’:    50,    ‘pay’:    0,    ‘job’:    None}

#    база данных db = {}

db[‘bob’] = bob db[‘sue’] = sue db[‘tom’] = tom

if __name__ == ‘__main__’:    # если запускается, как сценарий

for key in db:

print(key, ‘=>\n ‘, db[key])

Как обычно, проверка переменной__name__в конце примера 1.1 возвра

щает true, только если файл был запущен как самостоятельный сценарий, а не был импортирован как модуль. Если запустить пример как самостоятельный сценарий (например, из командной строки, щелчком на ярлыке или из среды IDLE), будет выполнен программный код теста в теле условной инструкции, который выведет содержимое базы данных в поток стандартного вывода (напомню, что функция print использует этот поток по умолчанию).

Ниже приводится пример запуска сценария из командной строки в ОС Windows. В окне Командная строка (Command Prompt) выполните команду cd, чтобы перейти в каталог со сценарием. На других платформах используйте аналогичную программу-консоль:

...\PP4E\Preview> python initdata.py

bob =>