如何强制python使用dumbdbm模块创建新数据库?

时间:2013-04-26 22:30:43

标签: python database unix shelve

shelve模块在​​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创建数据库。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:5)

您无法控制数据库模块shelve.open使用的内容,但有一些解决方法。

最好通常是自己创建数据库并手动将其传递给the Shelf constructor,而不是调用shelve.open

db = dumbdbm.open('mydb')
shelf = shelve.Shelf(db)

第一个参数是提供dict类似接口的任何对象,它可以存储字符串,这正是任何*dbm对象所在。