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'