我想在我的Windows机器上使用dbm模块,但目前只支持Unix。 http://docs.python.org/library/dbm.html
有没有人知道类似的模块具有相似的语法或解决方法,以使dmb功能在Windows上?能够访问写入硬盘驱动器的数据库,就像我编写代码来访问字典一样,会很棒。谢谢你的帮助!
答案 0 :(得分:3)
实际上,经过更多的Google搜索后,我发现了这一点:
http://docs.python.org/library/anydbm.html#module-anydbm
我在Windows上试过这个并且似乎工作正常=)
答案 1 :(得分:2)
基于使用Python 2.7.2在Windows 7系统上进行的以下测试,似乎Windows操作系统支持dbhash。
import os
import anydbm
import whichdb
file = os.curdir + '/testdbm' # define a test file name in the current directory
d = anydbm.open(file, 'c') # create a new database using the test file name
db_type = whichdb.whichdb(file) # get the dbm database type
print(db_type) # display the result
'dbhash'
答案 2 :(得分:1)
如果Python 3具有相关性,我会选择外部k-v解决方案,因为dumbdbm并不令人高兴。
一些纯Python选项:
semidbm - dumbdbm的更快替代方案,仅限Python标准库,pip和go。如果我想确保用户的可移植性和可用性,我会选择这个。
PickleDB - 使用json序列化数据。只有Standrad库,我还没有进行基准测试,但由于序列化开销,我怀疑它比semidbm慢。
Petite DB - 我自己使用Python的zipfile模块的简单解决方法。书中的基本测试,但它没有准备好生产。
还有LMDB,UnQLite和SQLite4 LSM的Python包装器,所有这些包装器都支持Windows,尽管SQLite4绑定未经过测试。
后两者是查尔斯·莱弗(Charles Leifer),他精通k-v stores和狂热的Python开发人员(见Peewee)。
就LMDB而言,我已经尝试了一段时间。没有投诉,但它使用事务模型,除非你子类/撰写/提交拉取请求等,否则你不能像使用其他dbm一样使用字典样式。 此外,它明确doesn't utilize compression(请参阅also)这是我感兴趣的内容。
所以LMDB并不适合我的特定需求。它似乎功能强大,绑定工作正常,安装它们是不可能的(pip为我工作,没有必要单独安装LMDB或任何滋扰这种效果)。
答案 3 :(得分:0)
我认为Windows上的anydbm只会加载dumbdbm,因为所有其他模块似乎只是Unix。根据Python文档...
“dumbdbm模块旨在作为最后的手段 当没有更强大的模块可用时,anydbm模块。 dumbdbm 模块不是为了速度而编写的,并没有像它那样大量使用 其他数据库模块。“