web-dev-qa-db-fra.com

Pymongo/bson: Convertissez un objet python.cursor.Cursor en objet sérialisable/JSON

Nouveau sur MongoDb et Python (webapp2). Je récupérais donc des données dans une base de données mongodb . Mais je n'ai pas pu utiliser json.dumps sur les données renvoyées. Voici mon code:

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

Cela jette une erreur:

TypeError: pymongo.cursor.Cursor object at 0x7fcd51230290 is not JSON serializable

Le type de exchangedata est pymongo.cursor.Cursor. Comment puis-je le convertir en objet JSON? 

11
Tarun Dugar

Utilisez les sauvegardes de 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"}}]'
23
Bernie Hackett

Solution simple

 // Use dumps from bson.json_util:
from bson.json_util import dumps

@app.route("/")
def home_page():

    booking = dumps(mongo.db.bookings.find())
    print booking
    return  booking
0
ngCourse