Что-то не так с созданием сайта на Python Pickle? - PullRequest
6 голосов
/ 10 сентября 2010

Я довольно долго играл с этой идеей, но не видел никакой информации о людях, делающих это.У меня есть небольшой проект веб-сайта, где мне нужно загрузить и изменить 1 объект.Этот объект довольно прост и не должен превышать нескольких килобайт.Вместо того, чтобы использовать БД для этого небольшого количества данных, почему бы просто не использовать pickle и / или shelve, чтобы сохранить эти данные и загрузить их?Я планирую использовать для проекта микро-фреймворк типа Bottle или Flask.

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

Спасибо за любой ввод!

Ответы [ 3 ]

3 голосов
/ 10 сентября 2010

Я бы не стал записывать маринованную строку в файл напрямую.Слишком много низкоуровневых деталей, о которых нужно беспокоиться.Прочтите Durus , ZODB или этот пост от FriendFeed о хранении объектов Python в MySQL.

Не отказывайтесь от реляционных баз данных, они дают вам много возможностей прямо из коробки (даже для простых проектов).

2 голосов
/ 10 сентября 2010

Нет причин, по которым вы не можете реализовать постоянство объектов через стандартные модули Python pickle или shelve .Просто убедитесь, что ваши объекты чисты и надежно отмываются.Масштабируемость может стать проблемой, если ваш сайт выходит за рамки вашей текущей области, но до этого ваша идея должна работать просто отлично.Если этот день наступит, следующим очевидным шагом будет рассмотреть возможность использования превосходного SQLite модуля Python , который поставляется в комплекте с последними версиями языка.

1 голос
/ 10 сентября 2010

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

...