搁置模块在anydbm模块的顶部实现.此模块充当4种不同特定DBM实现的外观,它将按以下顺序选择创建新数据库时可用的第一个模块:
> dbhash
(已弃用但仍是第一个anydbm选项).这是bsddb模块的代理,.open()实际上是bsddb.hashopen()
> gdbm,用于GNU DBM库的Python模块,提供比dbm模块在与同一个库一起使用时提供的更多功能.
> dbm,一个代理模块,使用ndbm,BSD DB和GNU DBM库(在编译Python时选择).
> dumbdbm,一个纯python实现.
但是在我的系统中,虽然由于某些原因我有dbhash,但我希望它只使用dumbdbm创建数据库.
我怎样才能做到这一点?
解决方法:
您无法控制shelve.open使用的db模块,但有一些解决方法.
最好的方法是自己创建数据库并手动将其传递给the Shelf
constructor,而不是调用shelve.open:
db = dumbdbm.open('mydb')
shelf = shelve.Shelf(db)
第一个参数是提供类似dict的接口的任何对象,它可以存储字符串,这正是任何* dbm对象所在的.