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

Ali*_*_IT 5 python database unix shelve

shelve模块在anydbm模块顶部实现.此模块充当4种不同特定DBM实现的外观,它将按以下顺序选择创建新数据库时可用的第一个模块:

  • dbhash (已弃用但仍是anydbm首选).这是bsddb模块的代理,.open()真的bsddb.hashopen()

  • gdbm,GNU DBM库的Python模块,提供的功能比dbm模块在与同一个库一起使用时提供的功能更多.

  • dbm,一个使用ndbmBSD DB和GNU DBM库的代理模块(在编译Python时选择).

  • dumbdbm,一个纯python实现.

但是在我的系统中,虽然我dbhash出于某种原因我希望它只是用它来创建数据库dumbdbm.

我怎样才能做到这一点?

aba*_*ert 5

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

最好的通常是创建自己的数据库,并将它传递给Shelf构造函数手动,而不是调用shelve.open:

db = dumbdbm.open('mydb')
shelf = shelve.Shelf(db)
Run Code Online (Sandbox Code Playgroud)

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