Хранить простые пользовательские настройки в Python - PullRequest
7 голосов
/ 14 октября 2008

Я программирую веб-сайт, на котором у пользователей будет несколько настроек, таких как выбор цветовой схемы и т. Д. Я рад сохранить их в виде текстовых файлов, и безопасность не является проблемой.

В настоящее время я вижу это так: есть словарь, в котором все ключи - это пользователи, а значения - это словари с настройками пользователей в них.

Например, userdb ["bob"] ["colour_scheme"] будет иметь значение "blue".

Как лучше всего хранить его в файле? Травление словаря?

Есть ли лучшие способы делать то, что я пытаюсь сделать?

Ответы [ 12 ]

0 голосов
/ 14 октября 2008

Есть ли конкретная причина, по которой вы не используете базу данных для этого? это кажется нормальным и естественным делом - или сохранить набор настроек в БД, набранный по идентификатору пользователя или что-то в этом роде.

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

OTOH, для настроек, которые могут использоваться клиентским кодом, их хранение в виде javascript в статическом файле, который можно кэшировать, было бы удобно - за счет наличия нескольких мест, где у вас могут быть настройки. (Я бы, вероятно, сохранил эти настройки в БД и перестроил статические файлы при необходимости)

0 голосов
/ 14 октября 2008

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

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

Травление - это разумный способ хранения таких данных, но, к сожалению, формат данных маринования общеизвестно, что он не читается человеком. Возможно, вам лучше сохранить его как repr(dictionary), который будет более читаемым форматом. Чтобы перезагрузить пользовательские настройки, используйте eval(open("file").read()) или что-то подобное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...