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}
我正在尝试使用以下方法保存 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}