Kivy - Salvando informações e persistência de dados
Nesse vídeo vamos aprender a como salvar informações produzidas pelo aplicativo Kivy e torná-las persistentes. Isso significa que os dados estarão disponíveis mesmo depois de desisntalações e atualizações do aplicativo.
Essa estratégia funciona para diversas plataformas, tanto mobile como Android ou IOS, como desktop (Windows, Linux, Mac).
Para armazenar as informações no dispositivo, usaremos o formato json.
Criando um arquivo no sistema
Para criar um arquivo no sistema, podemos usar o gerenciador de contexto 'with' da seguinte forma:
# O parâmetro 'w' significa escrita (Write)
# e 'f' é a referência do arquivo
with open('filename.json','w') as f:
Este comando criará um arquivo no sistema, no mesmo diretório de onde está o arquivo 'main.py' de nome 'filename.json'. Após criar este arquivo, podemos escrever informações nele. Para facilitar, utilizaremos o módulo 'json'.
Gravando informações no arquivo
Para gravar o conteúdo de uma variável neste arquivo em formato 'json', utilizamos o seguinte código:
with open('filename.json','w') as f:
json.dump(variavel,f)
O método 'dump' do módulo 'json' salva a variável Python 'variavel' no arquivo 'filename.json', que chamamos de 'f' no código.
Lendo informações do arquivo
Posteriormente, podemos recuperar a informação contida neste arquivo com o seguinte comando:
# Note que agora estamos abrindo
# o arquivo para leitura com 'r'
with open('filename.json','r') as f:
variavel = json.load(f)
Abrimos o arquivo 'filename.json' para leitura, informando o parâmetro 'r' de Read, e depois utilizamos o método 'load' do módulo 'json' para reatribuir o valor armazenado no arquivo à variável 'variavel'.
Persistência de dados
Agora precisamos fazer com que esses dados não sejam perdidos a cada atualização do nosso aplicativo. Isso ocorre pois todos os arquivos que estão no diretório do código são removidos e substituidos pelos novos. Por isso, precisamos armazenar essas informações em um lugar seguro, que irá persistir mesmo se o usuário desisntalar ou atualizar o aplicativo.
Para isso, existe um diretório especial no sistema reservado para armazenar as informações dos programas instalados. Cada plataforma tem um lugar específico para isso.
Para nossa sorte, o Kivy nos informa qual é o lugar adequado para salvar estes arquivos. Podemos conseguir esta localização, ou caminho,lo seguinte comando?
caminho = App.get_running_app().user_data_dir+'/'
Neste código, chamamos a instância do App que está rodando e procuramos pelo valor 'user_data_dir', que contém o caminho do diretório do sistema para a gravação. Inserimos uma barra, para indicar que vamos gravar os arquivos dentro dessa pasta e depois armazenamos essa localização na variável 'caminho'.
Agora é só usar esse caminho antes do nome do arquivo que estamos lendo ou gravando, assim:
# para ler
with open(caminho+'filename.json','r') as f:
variavel = json.load(f)
# para gravar
with open(caminho+'filename.json','w') as f:
json.dump(variavel,f)
No vídeo eu mostro como aplicar esta estratégia no aplicativo com mais detalhes. Confira :)
Faça o download dos arquivos desta aula aqui.