Лучший способ сохранить сложные структуры данных Python во время сеансов программы (pickle, json, xml, database, other)

Ищите рекомендации по наилучшей технике для сохранения сложных структур данных Python во время сеансов программы.

Вот список методов, которые я придумал до сих пор:

  • рассол / cpickle
  • JSON
  • jsonpickle
  • XML
  • база данных (например, SQLite)

Pickle – самый простой и быстрый способ, но я понимаю, что нет гарантии, что вывод pickle будет работать в разных версиях Python 2.x / 3.x или в 32-битных реализациях Python.

Json работает только для простых структур данных. Кажется, что Jsonpickle исправляет это И, кажется, написано для работы в разных версиях Python.

Сериализация в XML или в базу данных возможна, но представляет собой дополнительные усилия, так как нам придется выполнять сериализацию самостоятельно.

Спасибо, Малькольм

4 Solutions collect form web for “Лучший способ сохранить сложные структуры данных Python во время сеансов программы (pickle, json, xml, database, other)”

У вас есть неправильное представление о соленьях: они гарантированно работают в версиях Python. Вам просто нужно выбрать версию протокола, поддерживаемую всеми версиями Python, о которых вы заботитесь.

Техника, которую вы оставили вне, – это маршал, который не гарантирует работу над версиями Python (и, кстати, как пишут файлы .pyc).

Вы оставили модули маршала и полки .

Кроме того, эта страница документов python охватывает сохранение

Вы смотрели на PySyck или pyYAML ?

Каковы ваши критерии для "наилучшего"?

  • pickle может делать большинство структур Python, глубоко вложенных тоже
  • sqlite dbs можно легко запросить (если вы знаете sql 🙂
  • скорость / память? не доверяйте никаким критериям, которые вы не подделали сами.

(Хорошая печать:
cPickle.dump (protocol = -1) сжимает, в одном случае 15M pickle / 60M sqlite, но может сломаться.
Строки, которые встречаются много раз, например названия стран, могут занимать больше памяти, чем вы ожидаете; см. встроенный intern ().
)

  • Импорт CSV-файла в таблицу базы данных sqlite3 с использованием Python
  • Преобразование JSON в SQLite в Python - Как правильно сопоставить json-ключи с столбцами базы данных?
  • python database / sql programming - с чего начать
  • Ошибка декодирования Python ASCII и Unicode
  • Как экспортировать sqlite в CSV в Python без форматирования в виде списка?
  • как получить единственный результат из SQLite-запроса в python?
  • Сплит RSS RSS-строка с использованием Python
  • Возвращение отдельных строк в SQLAlchemy с помощью SQLite
  •  
    Interesting Posts for Van-Lav

    Должен ли я использовать Python или Assembly для супер быстрой программы копирования

    «Isnotnan» функциональность в numpy, может ли это быть более pythonic?

    Помещение новой строки в метку matplotlib с TeX в Python?

    Распаковка аргументов ключевого слова, но только те, которые соответствуют функции

    Python socket.error: Соединение отклонено

    Python, чтобы открыть текстовый файл и запустить другие файлы python в текстовом файле

    Ошибка кодирования с помощью sqlalchemy и postgresql

    Отображение и возврат числа повторяющейся строки в функции?

    Вычисление простых чисел и добавление к списку

    Как рассчитать средние значения по столбцам в данной структуре данных?

    объединение нескольких массивов numpy

    Регулярные выражения в скрипте find-and-replace Python? Обновить

    Python: ввод данных из sys.stdin, неблокирующий

    У меня ошибка компилятора «не определена», хотя есть определение

    zc.buildout перестает работать: ImportError: нет модуля с именем apport.fileutils

    Python - лучший язык программирования в мире.