在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