2012-11-27 50 views
0

我正在尝试使用CouchDB的Python包装来更新数据库。该文件按如下所示构建为嵌套字典。为什么CouchDb-python(或我)会混淆字符串和字典?

doc = { ..., 
    'RLSoo': {'RT_freq': 2, 'tweet': "They're going to play monopoly now. 
    This makes me feel like an excellent mother. #Sandy #NYC"}, 
    'GiltCityNYC': {}, 
    ....} 

我愿把大dicitionary的每个条目,例如RLSoo到它自己的文件。但是,当我尝试下面的代码时,我收到一条错误消息。

for key in doc: 
     db.update(doc[key],all_or_nothing=True) 

错误消息

TypeError: expected dict, got <type 'str'> 

我不明白为什么CouchDB的将不接受字典。

回答

1

根据Database.update()方法实现和他的文档,第一个参数应该是文档对象列表(例如字典列表)。由于您的doc变量具有字典类型,因此直接对其​​进行迭代实际上遍历所有字符串类型的键。如果我理解你的情况,可能你的doc包含嵌套的文档为values。所以,尽量只:

db.update(doc.values(), all_or_nothing=True) 

而这一切都第一级值类型的字典,它应该工作!