Você lê e escreve exatamente como um dicionário.
>>> import bsddb
>>> db = bsddb.hashopen('mydb.db')
>>> db['FirstName'] = 'Joe'
>>> db['LastName'] = 'Doe'
>>> db['Age'] = '30'
>>> db.close()
>>>
>>> db = bsddb.hashopen('mydb.db')
>>> db['FirstName']
'Joe'
No entanto, as lojas Berkeley DB apenas pares de seqüências de chaves/valores, então talvez não seja isso que você realmente precisa se deseja armazenar esses valores para várias entradas diferentes. Se nenhum outro idioma usará esse arquivo de banco de dados, talvez você possa usar o módulo Shelve para armazenar ditos em conserva. Se você precisar ser fácil para os outros usarem, poderá serializar seus dados de formulário como JSON. Algo assim:
>>> import json
>>> import bsddb
>>> db = bsddb.hashopen('mydb.db')
>>> form = {'FirstName': 'Joe', 'LastName': 'Doe', 'Age': 30}
>>> db['joedoe'] = json.dumps(form)
>>> db.close()
>>>
>>> db = bsddb.hashopen('mydb.db')
>>> json.loads(db['joedoe'])
{'FirstName': 'Joe', 'LastName': 'Doe', 'Age': 30}
Mas, francamente, isso começa a parecer cada vez mais um anti-padronização e, a menos que você esteja absolutamente restrito ao uso de Berkeley DB por algum motivo, você não deve fazer dessa maneira. Você deve estar usando o SQLite para isso.