Persistência em Python com módulo Shelve
Uma das coisa que atualmente mais acho legal em programação é Python. É muito bem documentado, simples e rápido. Em um projeto open source que estou parcipando, o Peanut [Explico melhor em um outro post
], tive que persistir uma configuração do software, e com isso veio a possibilidade de utilizar o módulo shelve do python.
O shelve foi criado para trabalhar com persistência de dicionários (dict) python em arquivo. Para operações simples, configuração, dados não muito grandes, é perfeito. Sua chave sempre deve ser uma string.
Como a maioria dos módulos em python, é tudo muito simples:
Exemplo 1: Vamos salvar uma lista de e-mail em um arquivo
1 2 3 4 5 6 7 | import shelve emails = shelve.open('emails.db') emails["maria"] = "exemplo@maria.com.br" emails["joao"] = "exemplo@joao.com.br" emails.close() |
Recuperando os e-mails
1 2 3 4 5 6 | import shelve emails = shelve.open('emails.db') print emails["maria"] emails.close() |
Exemplo 2: Persistência de um objeto mais completo
Criação de um objeto simples
1 2 3 4 5 6 7 | class Profile(): def __init__(self, name, type, username, password=None, auto_login='off'): self.name = name self.type = type self.username = username self.password = password self.auto_login = auto_login |
Classe util para acesso a shelve
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | import shelve class Db(): def open(self): self.__db = shelve.open("profiles.db") def close(self): self.__db.close() def add(self, profile): self.__db[profile.name] = profile; def size(self): return len(self.__db) def find_all(self): return self.__db.values(); def get(self, key): return self.__db[key] def get_first(self): return self.get(self.__db.keys()[0]) |
Inserindo um perfil
1 2 3 4 5 | db = Db() db.open() profile = Profile("maria", "user", "mariazinha", "123") db.add(profile) db.close() |
