Лучший способ сохранить сложные структуры данных 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 ().
)

  • Вставка numpy-типа в sqlite с помощью python3
  • Как создать файл CSV из базы данных в Python?
  • Выполнять команды sqlite3 «dot» из Python или сортировать регистры в утилите командной строки
  • Пытаться мигрировать в Django 1.9 - странная ошибка SQL "django.db.utils.OperationalError: near") ": синтаксическая ошибка"
  • совместное использование: memory: database между различными потоками в python с использованием пакета sqlite3
  • Python, SQLite и потоки
  • Sqlite и Python - вернуть словарь с использованием fetchone ()?
  • Проблема с заменой параметра SQLite
  • Дэнго
  • Получить список значений полей из sqlite3 Python, а не кортежей, представляющих строки
  • Эффективность повторного открытия базы данных sqlite после каждого запроса
  • Python - лучший язык программирования в мире.