Какие есть доступные модули Python для сохранения и загрузки данных? - PullRequest
7 голосов
/ 17 января 2012

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

Я сам знаком с json и pickle , и я также слышал о pytables .Там, вероятно, еще больше.Кроме того, кажется, что каждый модуль соответствует определенной цели и имеет свои ограничения (например, загрузка большого списка или словаря с помощью pickle занимает много времени, если он вообще работает).Следовательно, было бы неплохо иметь надлежащий обзор возможностей.

Не могли бы вы тогда помочь предоставить полный список модулей, используемых для сохранения и загрузки данных, с описанием для каждого модуля:

  • каково общее назначение модуля,
  • его пределы,
  • почему вы выбрали бы этот модуль среди других?

Ответы [ 2 ]

7 голосов
/ 17 января 2012

маршал :

  • Плюсы:

    • Может читать и записывать значения Python в двоичном формате.Поэтому он намного быстрее, чем pickle (который основан на символах).
  • Минусы:

    • Поддерживаются не все типы объектов Python.Некоторые неподдерживаемые типы, такие как подклассы встроенных, будут правильно отображаться и отменять маршалинг
    • Не предназначен для защиты от ошибочных или злонамеренно сконструированных данных.
    • Сопровождающие Python оставляют за собой право изменять маршалформат в несовместимых назад форматах при необходимости

полка

  • Плюсы:

    • Значения в полке могут быть по существу произвольными объектами Python
  • Минусы:

    • Не поддерживает одновременное чтение / записьдоступ к стеллажам

ZODB (предложено @Duncan)

  • Pro:

    • прозрачное постоянство
    • полная поддержка транзакций
    • подключаемое хранилище
    • масштабируемая архитектура
  • Минусы

    • не входит в стандартную библиотеку.
    • невозможно (легко) перезагрузить данные, если не доступна исходная объектная модель python, используемая для сохранения (с учетом сложности версий и переносимости данных)
4 голосов
/ 17 января 2012

Имеется обзор стандартных модулей хранения данных lib.

...