Является ли "shelve" просто комбинацией "dbm" и "pickle"? - PullRequest
2 голосов
/ 07 октября 2019

Так что все, что делается в shelve, может быть сделано отдельно с dbm и pickle?

1 Ответ

3 голосов
/ 07 октября 2019

Да и нет.

Да, это зависит от dbm и pickle.

Разница с базами данных «dbm» заключается в том, что значения (а не ключи)!) на полке могут быть по сути произвольные объекты Python - все, что может обрабатывать модуль pickle

, модуль полки поддерживается с помощью pickle

Нет, способ использования этих модулейзависит от платформы / системы.

Выбор того, какой пакет базы данных будет использоваться (например, dbm.ndbm или dbm.gnu), зависит от того, какой интерфейс доступен. Поэтому небезопасно открывать базу данных напрямую с помощью dbm. База данных также (к сожалению) также подвержена ограничениям dbm, если она используется - это означает, что (маринованное представление) объектов, хранящихся в базе данных, должно быть довольно маленьким, и в редких случаях столкновения ключей могут привести к тому, что база данных будетотказаться от обновлений.


Подробнее в официальной документации .

...