我尝试使用Python将数据从Mongodb导出到csv。我收到错误:“TypeError:只能加入一个可迭代的”
mongodb数据样本:
{ "_id" : ObjectId("51dc52fec0d988a9547b5201"),
"hiringManagerIds" : [
"529f5ad1030dedd0a88ed7be",
"529f5ad1030dedd0a88ed7bf"
]
}
Python脚本:
import codecs
import csv
cursor = db.jobs.find( {}, {'_id': 1, 'hiringManagerIds': 1})
with codecs.open('jobs_array.csv', 'w', encoding ='utf-8') as outfile:
fields = ['_id', 'hiringManagerIds']
write = csv.writer(outfile)
write.writerow(fields)
for x in cursor:
write.writerow((x["_id"], u','.join(x.get('hiringManagerIds'))))
错误消息:
Traceback (most recent call last):
File "<stdin>", line 6, in <module>
TypeError: can only join an iterable
我想删除你的字母,所以我在脚本中使用了u.join。某些文档中缺少hiringManagerIds字段,因此我使用get。如果我不添加你''。加入脚本,它可以工作,但它会带来你在csv文件中的字母。我尝试了很多不同的方法,但它没有用。感谢任何帮助。感谢。
答案 0 :(得分:1)
错误源于其中一个没有hiringManagerIds的文档。如果未定义,则目前您的代码将None
返回到join方法,这需要一个iterable(None不是可迭代的)。
您应首先检查字典中是否存在密钥:
if 'hiringManagerIds' in x.keys():
write.writerow((x["_id"], u','.join(x.get('hiringManagerIds'))))
else:
write.writerow((x["_id"], '')))