编程语言
首页 > 编程语言> > 在Python 3中使用dbm模块

在Python 3中使用dbm模块

作者:互联网

我正在学习Python 3.1.3中的数据库文件和dbm模块,并且在使用Python 2中anydbm模块中的某些方法时遇到了麻烦.

keys方法工作正常,

import dbm

db = dbm.open('dbm', 'c')
db['modest'] = 'mouse'
db['dream'] = 'theater'

for key in db.keys():
    print(key)

产量:

b'modest'
b'dream'

但是项目和价值,

for k,v in db.items():
    print(k, v)

for val in db.values():
    print(val)

出现AttributeError:’_dbm.dbm’对象没有属性’items’.

另外,这:

for key in db:
    print(key)

获取TypeError:’_dbm.dbm’对象不可迭代.

这些方法是否在Python 3的dbm模块中不起作用?如果是这样,我还有什么可以代替的吗?

解决方法:

我认为这取决于它选择使用哪种实现.在我的系统上,Python 3中的dbm选择使用ndbm,它等效于Python 2中的dbm模块.当我显式使用该模块时,我看到了相同的限制.

似乎Python 2中的anydbm选择dumbdbm,它的速度较慢,但​​确实支持完整的字典接口.

您可能想看看Python 2和3中的shelve模块,该模块在这些接口上添加了另一层(允许您存储任何可腌制的对象).

标签:dbm,python-3-x,python,database
来源: https://codeday.me/bug/20191208/2090714.html