适用于Windows的Python DBM模块?

时间:2010-08-04 17:51:08

标签: python database module dbm

我想在我的Windows机器上使用dbm模块,但目前只支持Unix。 http://docs.python.org/library/dbm.html

有没有人知道类似的模块具有相似的语法或解决方法,以使dmb功能在Windows上?能够访问写入硬盘驱动器的数据库,就像我编写代码来访问字典一样,会很棒。谢谢你的帮助!

4 个答案:

答案 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模块的简单解决方法。书中的基本测试,但它没有准备好生产。

还有LMDBUnQLiteSQLite4 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   模块不是为了速度而编写的,并没有像它那样大量使用   其他数据库模块。“