2016-08-23 84 views
0

我试图直接从Twitter将推文保存为MongoDB以供稍后检索,但我一直收到有关json的错误消息。有人请帮忙!以下是带错误消息的示例代码。使用pymongo在MongoDB中存储推文

searcher = keywordSearcher('','','') ## this is an object class 
client = MongoClient('localhost', 27017) 
db = client.test_dbase ## connect to database twitter 
collection = db.rio_olympics ## create a collection object 
result = searcher.getTwitterComment('Olympics 2016', '21 August 2016', 2) ## this is where I query Twitter Search API 

py_dict = json.load(result) 
post_id = collection.insert_many(py_dict) 

错误消息:

Traceback (most recent call last): 
    File "/home/edidiong/myWorkSpace/keywordSearchTest.py", line 12, in <module> 
    class keywordSearchTest: 
    File "/home/edidiong/myWorkSpace/keywordSearchTest.py", line 45, in keywordSearchTest 
    py_dict = json.load(result) 
    File "/usr/lib/python2.7/json/__init__.py", line 287, in load 
    return loads(fp.read(), 
    AttributeError: 'dict' object has no attribute 'read' 
+0

BTW。 'collection.insert_many(py_dict)'看起来很奇怪。 'insert_many'插入多个文档,因此它需要一个'list'。使用'insert_one'来插入一个文档。 – Messa

回答

1

错误消息指示您正在尝试load字典对象。这意味着你已经有了一个字典对象。我不确定json.load即使确实有效也会有什么意义。

所以,你可能只需要做到:

py_dict = searcher.getTwitterComment("Olympics 2016", '21 August 2016', 2) 
post_id = collection.insert_many(py_dict) 
+0

非常感谢L-Jones9的帮助......我还必须将最后一行改为collection.insert(py_dict) – user6747582

1

searcher.getTwitterComment回报字典而不是JSON。

这就是为什么你会得到这个错误,json.load()已被称为可能。