私が見た最も一般的な解決策は、pymongoからjson_utilをインポートすることです。
import json
from pymongo import json_util
results = connection.get_collection('papayas_papaya')
results = results.find({
'identifier': '1',
})
serialized_results = [json.dumps(result, default=json_util.default, separators=(',', ':')) for result in results]
Flask virtualenvにpipを使用してpymongoをインストールしました。つまり、
pip install pymongo
上記のコードを実行すると、次のエラーが発生し続けます。
ImportError: cannot import name json_util
この行はpymongo-2.3-py2.6.Egg-info/installed-files.txt ../bson/json_util.pyで確認できます
誰かが私が間違っていることを理解するのに役立つヒントを得ましたか?
[〜#〜] update [〜#〜]:これについて少し試してみました-私はこれをうまく動作させることができました:
import pymongo
from bson.json_util import dumps
connection = pymongo.Connection("localhost", 27017)
db = connection.mydocs
def get():
cursor = db.foo.find({"name" : "bar"})
return dumps(cursor)
私が抱えていた問題の1つは、bsonを個別にpipインストールしようとすることでした-pymongoがbsonをもたらし、bsonを個別にインポートすると問題が発生しました。
正しい方向に向けてくれて@Cagexに感謝
Pymongoではなくbsonからインポートしたいようです。最近、json_utilがそのモジュールに移動されたと思います。 http://api.mongodb.org/python/current/api/bson/json_util.html
私はこの問題に関するかなりの数の投稿を見ましたが、彼らは私のために問題を解決しませんでした。私のために働いたのはdumps()を使用することでしたloads():
import pymongo
from bson.json_util import dumps
from bson.json_util import loads
connection = pymongo.Connection("localhost", 27017)
db = connection.mydocs
def get():
cursor = db.foo.find({"name" : "bar"})
return loads(dumps(cursor))
list()を使用して、pymongoカーソルをjsonオブジェクトに変換できます。
import pymongo
from bson.json_util import dumps
from bson.json_util import loads
connection = pymongo.Connection("localhost", 27017)
db = connection.mydocs
def get():
cursor = list(db.foo.find({"name" : "bar"}))
return loads(dumps(cursor))