import dbm
# Open database, creating it if necessary.
db = dbm.open('cache', 'c')
# Record some values
db[b'hello'] = b'there'
db['www.python.org'] = 'Python Website'
db['www.cnn.com'] = 'Cable News Network'
# Note that the keys are considered bytes now.
assert db[b'www.python.org'] == b'Python Website'
# Notice how the value is now in bytes.
assert db['www.cnn.com'] == b'Cable News Network'
# Loop through contents. Other dictionary methods
# such as .keys(), .values() also work.
for k, v in db.iteritems():
print(k, '\t', v)
# Storing a non-string key or value will raise an exception (most
# likely a TypeError).
db['www.yahoo.com'] = 4
# Close when done.
db.close()
没有人提到dbm。它像文件一样打开,像字典一样工作,并且在标准发行版中。
从文档http://docs.python.org/release/3.0.1/library/dbm.html
我会在任何更奇特的形式之前尝试这个,并且使用shelve/pickle会在加载时将所有内容拉入内存。
干杯
提姆
原则上,shelve模块完全按照您的要求工作。它提供了一个由数据库文件支持的持久字典。键必须是字符串,但shelve将处理pickling/unpickling值。db文件的类型可以有所不同,但它可以是一个Berkeley DB散列,这是一个优秀的轻量级键值数据库。
你的数据量听起来很大,所以你必须做一些测试,但是shelve/BDB很可能可以胜任。
注意:已弃用bsddb模块。以后shelve可能不支持BDB散列。
如果你想保存一个大字典,你基本上是在看一个数据库。
Python附带了对sqlite3的内置支持,这为您提供了一个由磁盘上的文件支持的简单数据库解决方案。
相关问题 更多 >
编程相关推荐