Pymongo/bson:将python.cursor.Cursor对象转换为serializable/JSON对象

Tar*_*gar 16 python json mongodb pymongo webapp2

MongoDb和Python(webapp2)新手.所以,我从mongodb数据库中获取了一些数据.但我无法使用json.dumps返回的数据.这是我的代码:

exchangedata = db.Stock_Master.find({"Country": "PHILIPPINES"}, {"_id" : 0})        
self.response.write(json.dumps(exchangedata)) 
Run Code Online (Sandbox Code Playgroud)

这会引发错误:

TypeError: pymongo.cursor.Cursor object at 0x7fcd51230290 is not JSON serializable
Run Code Online (Sandbox Code Playgroud)

类型exchangedatapymongo.cursor.Cursor.如何将其转换为json对象?

Ber*_*ett 28

使用bson.json_util中的转储:

>>> c = pymongo.MongoClient()
>>> c.test.test.count()
5
>>> from bson.json_util import dumps
>>> dumps(c.test.test.find())
'[{"_id": {"$oid": "555cb3a7fa5bd85b81d5a624"}}, {"_id": {"$oid": "555cb3a7fa5bd85b81d5a625"}}, {"_id": {"$oid": "555cb3a7fa5bd85b81d5a626"}}, {"_id": {"$oid": "555cb3a7fa5bd85b81d5a627"}}, {"_id": {"$oid": "555cb3a7fa5bd85b81d5a628"}}]'
Run Code Online (Sandbox Code Playgroud)

  • 此解决方案仅适用于非常小的数据集,因为它会将光标获取的所有对象都转储到单个字符串中。使用更大的数据并没有帮助,您也可以遍历所有结果并保存它们。 (2认同)