“shelve”只是“dbm”和“pickle”的组合吗?

NoN*_*ame 5 python shelve dbm pickle python-3.x

那么 中 所做的一切都可以用和shelve单独完成吗?dbmpickle

nor*_*ok2 5

是和否。

\n

是的,它依赖于dbmpickle

\n
\n

与 \xe2\x80\x9cdbm\xe2\x80\x9d 数据库的区别在于,架子中的值(不是键!)本质上可以是任意 Python 对象 \xe2\x80\x94 pickle 模块可以处理的任何内容

\n

搁置模块由 pickle 支持

\n
\n

不,这些模块的使用方式取决于平台/系统。

\n
\n

选择使用哪个数据库包(例如 dbm.ndbm 或 dbm.gnu)取决于可用的接口。因此直接使用dbm打开数据库是不安全的。数据库也(不幸地)受到 dbm 的限制,如果使用 \xe2\x80\x94 这意味着存储在数据库中的对象(的腌制表示)应该相当小,并且在极少数情况下会发生键冲突可能会导致数据库拒绝更新。

\n
\n
\n

更多内容请参见官方文档

\n