Persistência de dados Python - Pacote dbm
O pacote dbm apresenta um dicionário como bancos de dados de interface do estilo DBM. DBM stands for DataBase Manager. Isso é usado pelo sistema operacional UNIX (e semelhante ao UNIX). A biblioteca dbbm é um mecanismo de banco de dados simples escrito por Ken Thompson. Esses bancos de dados usam objetos de string codificados em binários como chave, bem como valor.
O banco de dados armazena dados usando uma única chave (uma chave primária) em depósitos de tamanho fixo e usa técnicas de hash para permitir a recuperação rápida dos dados por chave.
O pacote dbm contém os seguintes módulos -
dbm.gnu módulo é uma interface para a versão da biblioteca DBM conforme implementada pelo projeto GNU.
dbm.ndbm O módulo fornece uma interface para a implementação nbdm do UNIX.
dbm.dumbé usado como uma opção de fallback no evento, outras implementações dbm não são encontradas. Isso não requer dependências externas, mas é mais lento do que outros.
>>> dbm.whichdb('mydbm.db')
'dbm.dumb'
>>> import dbm
>>> db=dbm.open('mydbm.db','n')
>>> db['name']=Raj Deshmane'
>>> db['address']='Kirtinagar Pune'
>>> db['PIN']='431101'
>>> db.close()
A função open () permite o modo desses sinalizadores -
Sr. Não. | Valor e Significado |
---|---|
1 | 'r' Abra o banco de dados existente apenas para leitura (padrão) |
2 | 'w' Abra o banco de dados existente para leitura e gravação |
3 | 'c' Abra o banco de dados para leitura e escrita, criando-o se não existir |
4 | 'n' Sempre crie um novo banco de dados vazio, aberto para leitura e escrita |
O objeto dbm é um objeto semelhante a um dicionário, assim como um objeto prateleira. Portanto, todas as operações de dicionário podem ser realizadas. O objeto dbm pode invocar os métodos get (), pop (), append () e update (). O código a seguir abre 'mydbm.db' com o sinalizador 'r' e itera sobre a coleção de pares de chave-valor.
>>> db=dbm.open('mydbm.db','r')
>>> for k,v in db.items():
print (k,v)
b'name' : b'Raj Deshmane'
b'address' : b'Kirtinagar Pune'
b'PIN' : b'431101'