python中的平面文件键值存储

python中的平面文件键值存储,python,Python,我正在寻找Python中的平面文件、可移植键值存储。我将使用字符串作为键,使用字符串或列表作为值。我看过ZODB,但我希望它能得到更广泛的应用和更积极的开发。Python中是否有任何dmb模块需要系统库或数据库服务器(如mysql等),或者我可以使用它们中的任何一个写入文件 如果一个dbm不支持python列表,我想我可以将其序列化?很抱歉问一个明显的问题,但是一个文件不是很好吗?您可以查看搁置模块。它在引擎盖下使用pickle,并允许您创建在两次启动之间保持的键值查找 此外,带有dump和lo

我正在寻找Python中的平面文件、可移植键值存储。我将使用字符串作为键,使用字符串或列表作为值。我看过ZODB,但我希望它能得到更广泛的应用和更积极的开发。Python中是否有任何dmb模块需要系统库或数据库服务器(如mysql等),或者我可以使用它们中的任何一个写入文件


如果一个dbm不支持python列表,我想我可以将其序列化?

很抱歉问一个明显的问题,但是一个文件不是很好吗?

您可以查看
搁置
模块。它在引擎盖下使用pickle,并允许您创建在两次启动之间保持的键值查找


此外,带有
dump
load
方法的
json
模块可能也能很好地工作。

对sqlite有默认支持,并且包含在标准库中,但为了简单起见,您可以使用shelve

编辑: 我还没有测试过这个,买dbm可能是你的解决方案。自1979年以来,它一直是UNIX上的键值数据库

并且在需要串行化的情况下,可以使用泡菜。

< p>您可能想考虑哪种是对HDF5的Python接口。

In [1]: import h5py

In [2]: f = h5py.File('test.hdf5', 'w')

In [3]: f['abc'] = [1, 2, 3]

In [4]: f['d'] = 'hello'

In [5]: f.close()

In [6]: f2 = h5py.File('test.hdf5', 'r')

In [7]: f2['abc'].value
Out[7]: array([1, 2, 3])

In [8]: list(f2['abc'])
Out[8]: [1, 2, 3]

In [10]: f2['d'].value
Out[10]: 'hello'

谢谢你的回复!实际上,我需要根据键进行大量的固定时间查找(~数千个键,几十万个查找)。实际上,除了使用多个JSON文件外,我最终还是这样做了。@daveslab:应该补充一点,当数据放入内存时,这是一个很好的解决方案。然后,基本上需要一段时间来进行(反)序列化,但只能进行一次。在那之后,你会得到[dicts的时间复杂性]()。您可能会添加一个简短的示例代码,说明如何(反)序列化。(如果你同意的话,我也可以这么做。)谢谢你的回复!我听说shelve不太可靠。对于我来说,数据不被破坏是非常重要的。@oxuser-您能提供站点引用以避免这种情况吗?我从来没有遇到过这个问题。我很想回顾一下对该模块的批评,但我觉得它非常方便。当然:基本上,我想要一些能够在事务上工作的东西。对,我看了sqlite,但我需要做一些固定时间的查找,我需要的更多是一个键值商店提供的东西。编辑:另外,我听说了一些关于shelve可靠性的不好的事情。如果你想要的只是一个持久的密钥存储,shelve实际上是最简单的选择。请注意,它依赖于pickle,因此您必须使用“picklable”对象。我听说shelve并不是最可靠的:我希望使用事务支持dbm/anydbm听起来很酷。它似乎在使用基于BSD db的bdhash。所有Unix安装中都包括这个吗?和这个一样吗?