Обычно работа с хранилищами не вызывает затруднений, однако существуют некоторые шероховатости, о которых следует помнить.
Ключи должны быть строками (str)
Во-первых, несмотря на то, что сохранять можно любые объекты, ключи все же должны быть строками. Следующая инструкция не будет выполнена, если сначала вручную не преобразовать целое число 42 в строку 42:
dbase[42] = value # ошибка, но str(42) работает
Этим хранилища отличаются от словарей, размещаемых в памяти, которые допускают использование в качестве ключей любых неизменяемых объектов, и обусловлено использованием файлов DBM. Как мы уже видели, в Python 3.X ключи могут быть только строками str, а не bytes, потому что внутренняя реализация хранилищ во всех случаях пытается их кодировать.
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, II том, 2011