如何强制python使用dumbdbm模块创建新的数据库?
问题描述:
shelve
模块实现在anydbm
模块的顶部。该模块充当4个不同的具体DBM实现一个门面,并创建一个新的数据库时,按以下顺序将挑选第一个可用的模块:如何强制python使用dumbdbm模块创建新的数据库?
dbhash (不建议使用,但仍是第一
anydbm
选择)。这是bsddb
模块的代理,.open()
真是bsddb.hashopen()
GDBM,Python模块为GNU DBM库,提供比
dbm
模块与此相同的库使用时,可以提供更多的功能。dbm,使用
ndbm
,BSD DB和GNU DBM库(在Python编译时选择)的代理模块。dumbdbm,一个纯粹的python实现。
但在我的系统,虽然我有dbhash
由于某种原因,我想它来创建数据库刚刚与dumbdbm
。
我该如何做到这一点?
答
您无法控制使用什么db模块shelve.open
,但有解决方法。
最好是通常自己创建db和它手动传递给the Shelf
constructor,而不是调用shelve.open
:
db = dumbdbm.open('mydb')
shelf = shelve.Shelf(db)
第一个参数是,其提供能够存储串的dict
样接口的任何对象,这正是任何*dbm
对象。
出于兴趣,你为什么要这样做? – 2013-04-26 22:40:36
我试图类似于一个系统。基本系统创建一个使用dumbdbm的db文件,然后将该文件用作另一个程序的输入。如果我使用任何其他数据库,我必须更改其他程序以正确读取新文件,并且尽可能不要更改代码。 – 2013-04-26 22:47:08
只有dumbdbm在Windows上可用。如果你想在Linux和Windows之间移动'shelve'文件,他们必须使用dumbdbm格式。 – 2017-02-07 11:26:33