DirDBM:基于目录的存储¶
dirdbm.DirDBM¶
twisted.persisted.dirdbm.DirDBM
是一个类似 DBM 的存储系统。也就是说,它存储键和值之间的映射,就像 Python 字典一样,只是它将值存储在目录中的文件中 - 每个条目都是一个不同的文件。键必须始终是字符串,值也是如此。除此之外,DirDBM
对象的行为就像 Python 字典一样。
DirDBM
适用于您希望以有组织的方式存储少量数据的情况,而无需处理 RDBMS 或其他复杂数据库的复杂性。它简单易用、跨平台,并且不像 Python 内置的 DBM 模块那样需要任何外部 C 库。
>>> from twisted.persisted import dirdbm
>>> d = dirdbm.DirDBM("/tmp/dir")
>>> d["librarian"] = "ook"
>>> d["librarian"]
'ook'
>>> d.keys()
['librarian']
>>> del d["librarian"]
>>> d.items()
[]
dirdbm.Shelf¶
有时需要持久化比字符串更复杂的对象。经过仔细考虑,dirdbm.Shelf
可以透明地持久化它们。Shelf
的工作方式与 DirDBM
完全相同,只是值(但不是键)可以是任意可腌制对象。但是,请注意,在对象存储到 Shelf
后对其进行修改不会对 Shelf 产生任何影响。在修改对象时,需要在之后将它们显式地存储回 Shelf
中。
>>> from twisted.persisted import dirdbm
>>> d = dirdbm.Shelf("/tmp/dir2")
>>> d["key"] = [1, 2]
>>> d["key"]
[1, 2]
>>> l = d["key"]
>>> l.append(3)
>>> d["key"]
[1, 2]
>>> d["key"] = l
>>> d["key"]
[1, 2, 3]