MongoDB 上的字典错误保存数据 - InvalidDocument:无法编码对象

Dict error saving data on MongoDB - InvalidDocument: Cannot encode object

我正在尝试使用以下方法保存 Twitter API 获得的一些数据:

def getTweets(usuario):
    api = Autentificacion.autentificacion()
    usuari = api.get_user(usuario)
    dic = {}

    page_list = []
    for page in tweepy.Cursor(api.user_timeline, id=usuario, count=200).pages(16):
        page_list.append(page)    

    for page in page_list:
        for status in page:        
            id_tweet = str(status.id)
            tweet = {usuari.screen_name, status.text, status.created_at}

            try:
                dic[id_tweet]= tweet
            except (KeyError, TypeError, ValueError):
                print "Error al introducir datos en el diccionario"    
    try:
        datos = Controles()
        datos.saveOnBD(dic)
    except PyMongoError, e:
        print "Error: ", e

方法saveOnDB(dic)

def saveOnBD(self, dic):
    client = MongoClient('server', port)
    db = client.DB_Tweets_User_Date
    collection = db.tweets
    collection.insert_one(dic)

这就是追溯:

...
collection.insert_one(dic)
File "C:\Python27\lib\site-packages\pymongo\collection.py", line 467, in insert_one
return InsertOneResult(self._insert(sock_info, document),
File "C:\Python27\lib\site-packages\pymongo\collection.py", line 430, in _insert
gen(), check_keys, self.codec_options, sock_info)
bson.errors.InvalidDocument: Cannot encode object: set([u'That is a testing tweet', datetime.datetime(2015, 7, 2, 8, 23, 30), u'user'])

我发现了很多类似的问题,但解决方案对我不起作用。

错误信息

bson.errors.InvalidDocument: Cannot encode object: set([u'That is a testing tweet', datetime.datetime(2015, 7, 2, 8, 23, 30), u'user'])

表明您在代码中设置了无效对象。

错误在这一行中,这是 Python 2.7+ 语法 Python set:

tweet = {usuari.screen_name, status.text, status.created_at}

为此,它创建了一个 dict:

tweet = {'screen_name': usuari.screen_name, 'text': status.text, 'created_at': status.created_at}