Maneiras de armazenar dados para a API da linha de comandos

2

Estou desenvolvendo uma API no ambiente Unix para máquinas virtuais. Eu tenho que armazenar algumas informações em uma tabela sobre máquinas virtuais.

Atualmente estou usando o dicionário python de objetos de máquina virtual e armazenando o mesmo em picles.

Eu gostaria de saber sobre outras formas melhores (se houver) para armazenar os dados em APIs de linha de comando. Qualquer sugestão seria útil.

    
por Dany 09.11.2014 / 11:08

1 resposta

2

Para um aplicativo usado por outros, você provavelmente não deve usar o pickle, pois ele não é salvo para carregar dados de pickle de fontes não confiáveis (alternativamente, você teria que ter 100% de certeza de que os dados não poderiam ser alterados no disco entre escrever e ler) ).

Se os dados precisarem ser modificados pelos usuários, dê uma olhada em YAML . Uma implementação em Python está disponível através do PyYAML , mas um emissor com melhor saída legível seria pyaml .

As alternativas são JSON e com mais XML de trabalho.

Tudo isso requer que você faça traduções de e para tipos internos para os tipos suportados pelo formato de armazenamento (dicionários / mapas, listas, tipos primitivos (ints, strings, boolean)).

O YAML também suporta tipos definidos pelo usuário com os mesmos problemas de segurança que os dados em Python, mas pelo menos permite um carregamento seguro, algo que o pickle não suporta. YAML, através dos tipos de usuários explícitos, tem menos problemas ao carregar dados depois de alterar seu layout de origem (renomeando módulos, movendo classes) como você pode experimentar com o pickle.

    
por 09.11.2014 / 11:40