Способы хранения данных для API командной строки

Я разрабатываю API в среде Unix для виртуальных машин. Я должен хранить некоторую информацию в таблице о виртуальных машинах.

В настоящее время я использую словарь python объектов виртуальной машины и сохраняю их в pickle.

Я хотел бы узнать о других лучших способах (если они есть) для хранения данных в API-интерфейсах командной строки. Любое предложение было бы полезно.

One Solution collect form web for “Способы хранения данных для API командной строки”

Для приложения, используемого другими, вы, вероятно, не должны использовать рассол, так как он не экономит на загрузке рассола из ненадежных источников (в качестве альтернативы вам нужно будет сделать 100% уверенным, что маринованные данные не могут быть изменены на диске между записью и чтением).

Если данные когда-либо нуждаются в модификации пользователями, вы должны взглянуть на их запись с помощью YAML . Реализация Python доступна через PyYAML , но излучатель с более читаемым выходом будет пиамлом .

Альтернативами являются JSON и большая работа XML.

Все это требует, чтобы вы выполняли перевод на внутренние типы и из них в типы, поддерживаемые форматом хранения (словари / карты, списки, примитивные типы (ints, string, boolean)).

YAML также поддерживает определенные пользователем типы с теми же проблемами безопасности, что и маринованные данные Python, но по крайней мере позволяет некоторую безопасную загрузку, то, что рассол не поддерживает. YAML через явные типы пользователей имеет меньше проблем с загрузкой данных после изменения исходной компоновки (переименование модулей, перемещение классов), как вы можете испытать с pickle.

  • Неизвестная ошибка протокола SSL
  • Как активировать модуль записи Xorg на Raspbian?
  • Невозможно установить python из-за конфликта zypper
  • Python 3 не видит пакеты, установленные root под другим пользователем
  • Малиновый Pi Python Talkey (TTS) + Cron
  • Python-дружественные системы управления конфигурацией машины
  • Запуск скрипта на GPS Fix
  • Как упаковать Django-сайт для Debian (не пакет Python или яйцо)?
  • Как изменить мой скрипт для замены и добавления новой переменной в конфигурацию?
  • установить python 3.6 из исходного кода, теперь dpkg запутался
  • Могу ли я перейти на новую версию Python на старой версии Ubuntu?
  • Запуск сценария Python в виртуальной среде Conda в качестве службы
  • Interesting Posts

    Что общего у BSD?

    Начальное название вкладки и автоматическое ее обновление в xfce4-терминале

    Как узнать процесс работы общей библиотеки?

    pam_tacplus.so и sshd: пропустить проверку пользователя?

    Intel Wireless 1000 bgn не работает в debian / ubuntu

    Нейтрализация данных из Windows в Unix

    Смотреть / tmp для создания файлов и предотвращения удаления файлов?

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

    Как создать папку, которая изменит его содержимое на то, что имеет папка?

    Linux Mint 15 (Ubuntu 13.04) Спонтанно сбой: Пожалуйста, помогите мне разобраться в сообщениях системного журнала

    Публикация записи ARP

    Как я могу запустить 2 dd параллельно на одном устройстве

    Разделить переменную цикла aa как таковую и сохранить в другой, которая будет использоваться позже

    В чем разница между Uni1, Uni2 и Uni3 терминальными кодами шрифтов?

    Невозможно публиковать IP-адрес telnet на порту 80

    Linux и Unix - лучшая ОС в мире.