Python: Shelve - Persistencia de Dados de Forma Simples
por
em 03-03-2009 às 10:04 (6801 Visualizações)
A uns dias uma cara no forum abriu essa thread falando que estava precisando criar uma listagem de 20 músicas aleatória baseado nas músicas que ele tem no HD.
Eu ia sugerir um shell-script básico mas ai o PedroArtur sugeriu uma solução com Python. Eu achei legal a solução do Pedro e acabei sugerindo criar um banco de dados simples com o SQLite para tornar o processo mais rápido. O resultado ficou bem legal. Mas até um pouco complexo pra algo simples... QUem quiser ver, o código fonte tá lá. Só não reparem a bagunça, fiz com pressa...
Pensei em usar algumas coisas mais simples, mas como o numero de músicas pode se tornar grande um BD simples foi a melhor opção mesmo. Mas para programas simples, onde a quantidade de dados a ser armazenado é baixo, podemos utilziar uma solução mais Pythoniana: Shelve
O Shelve é um módulo muito útil para quem quer fazer programas que armazenam dados, sejam passados por usuário ou configurações do programa. Um exemplo simples:
Código :[FONT=Courier New][COLOR=DarkSlateGray]>>> import shelve >>> >>> x = 10 >>> y = \"string de teste\" >>> z = 1.2 >>> >>> dados = shelve.open(\"dados.db\") >>> dados[\"x\"] = x >>> dados[\"y\"] = y >>> dados[\"z\"] = z >>> dados.close() >>> >>> exit()[/COLOR][/FONT]
Pra quem não entendeu nada disso ai em cima, sugiro antes ler isso aqui.
Explicando o código:
- Importei o módulo shelve;
- criei os dados x, y e z;
- criei um "banco de dados". Esse arquivo dados.db não precisa existir anteriormente, ele é criado no HD, no diretório corrente do programa;
- "Inseri" no arquivo dados.db as variáveis x, y e z com os nomes x, y e z;
- Fechei o "banco de dados".
Pronto, nossas variáveis x, y e z estão armazenadas! Como pegar elas de volta?? Vamos lá...
Código :[FONT=Courier New][COLOR=DimGray]>>> import shelve [/COLOR][/FONT][FONT=Courier New][COLOR=DimGray]>>> dados = shelve.open(\"dados.db\") >>> >>> x = dados[\"x\"] >>> y = dados[\"y\"] >>> z = dados[\"z\"] >>> print x 10 >>> print y string de teste >>> print z 1.2 >>> dados.close() >>> exit()[/COLOR][/FONT]
Simples não?! Mais simples que usar o Hibernate - persistencia de dados em Java - ou criar arquivos de configuração em C...
A parte mais legal do shelve é que nele você pode guardar qualquer tipo de variável: tuplas, listas, dicionários... A primeira vez que trabalhei com o shelve eu armazenava instâncias de classes . Sério, olha só:
Código :[FONT=Courier New][COLOR=DimGray]>>> import shelve >>> class Pessoa: ... def __init__(self, idade, nome): ... self.idade = idade ... self.nome = nome ... >>> p = Pessoa(23, \"Magnun Leno\") >>> p.nome 'Magnun Leno' >>> p.idade 23 >>> dados = shelve.open(\"dados.db\") >>> dados[\"eu\"] = p >>> dados.close() >>> exit()[/COLOR][/FONT]
Agora recuperar a instancia:
Código :[FONT=Courier New][COLOR=DimGray]>>> import shelve >>> >>> class Pessoa: ... def __init__(self, idade, nome): ... self.idade = idade ... self.nome = nome ... >>> dados = shelve.open(\"dados.db\") >>> p = dados[\"eu\"] >>> p.nome 'Magnun Leno' >>> p.idade 23 >>> dados.close()[/COLOR][/FONT]
Bem, ai está a dica! Façam bom uso!
Comentários
+ Enviar Comentário