Shelve é um poderoso módulo Python para persistência de objetos. Ao arquivar um objeto, você deve atribuir uma chave pela qual o valor do objeto é conhecido. Dessa maneira, o arquivo shelve se torna um banco de dados de valores armazenados, podendo qualquer um deles ser acessado a qualquer momento.
Código de exemplo para arquivar em Python
Para arquivar um objeto, primeiro importe o módulo e depois atribua o valor do objeto da seguinte maneira:
prateleira de importação
database = shelve.open (filename.suffix)
object = Object ()
database ['key'] = objeto
Se você deseja manter um banco de dados de estoques, por exemplo, você pode adaptar o seguinte código:
prateleira de importação
stockvalues_db = shelve.open ('stockvalues.db')
object_ibm = Values.ibm ()
stockvalues_db ['ibm'] = object_ibm
object_vmw = Values.vmw ()
stockvalues_db ['vmw'] = object_vmw
object_db = Values.db ()
stockvalues_db ['db'] = object_db
Um "stock values.db" já está aberto, você não precisa abri-lo novamente. Em vez disso, você pode abrir vários bancos de dados ao mesmo tempo, escrever para cada um à vontade e deixar
Pitão fechá-los quando o programa terminar. Você pode, por exemplo, manter um banco de dados separado de nomes para cada símbolo, acrescentando o seguinte ao código anterior:## assumindo que a prateleira já foi importada
stocknames_db = shelve.open ('stocknames.db')
objectname_ibm = Names.ibm ()
stocknames_db ['ibm'] = objectname_ibm
objectname_vmw = Names.vmw ()
stocknames_db ['vmw'] = nome_do_objeto_vmw
objectname_db = Names.db ()
stocknames_db ['db'] = nome_do_objeto
Observe que qualquer alteração no nome ou sufixo do arquivo de banco de dados constitui um arquivo diferente e, portanto, um banco de dados diferente.
O resultado é um segundo arquivo de banco de dados que contém os valores fornecidos. Diferentemente da maioria dos arquivos gravados em formatos com estilo próprio, os bancos de dados salvou em forma binária.
Depois que os dados são gravados no arquivo, eles podem ser recuperados a qualquer momento. Se você deseja restaurar os dados em uma sessão posterior, abra novamente o arquivo. Se for a mesma sessão, basta recuperar o valor; arquivar arquivos de banco de dados são abertos no modo de leitura e gravação. A seguir, é apresentada a sintaxe básica para conseguir isso:
prateleira de importação
database = shelve.open (filename.suffix)
objeto = banco de dados ['chave']
Portanto, uma amostra do exemplo anterior seria:
prateleira de importação
stockname_file = shelve.open ('stocknames.db')
stockname_ibm = stockname_file ['ibm']
stockname_db = stockname_file ['db']
Considerações com arquivar
É importante observar que o banco de dados permanece aberto até você fechá-lo (ou até o programa terminar). Portanto, se você estiver escrevendo um programa de qualquer tamanho, deseja fechar o banco de dados após trabalhar com ele. Caso contrário, o banco de dados inteiro (não apenas o valor desejado) fica na memória e consome recursos computacionais.
Para fechar um arquivo de arquivar, use a seguinte sintaxe:
database.close ()
Se todos os exemplos de código acima fossem incorporados em um programa, teríamos dois arquivos de banco de dados abertos e consumindo memória nesse momento. Portanto, depois de ler os nomes das ações no exemplo anterior, você poderá fechar cada banco de dados por sua vez, da seguinte maneira:
stockvalues_db.close ()
stocknames_db.close ()
stockname_file.close ()