30
  • 私はこれがかなり一般的な問題であることを知っています。私は小さなFlaskアプリを書いていて、いくつかのクエリをビューにフィードバックしようとしています。ローカルのMongoDBセットアップに接続し、クエリを成功させましたが、それを使用してjsonオブジェクトを生成できません。

私が見た中で最も一般的な解決策は、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]

pipを使用してPlyongoをFlaskvirtualenvにインストールしました。

pip install pymongo

上記のコードを実行すると、次のエラーが発生し続けます。

ImportError: cannot import name json_util

この行はpymongo-2.3-py2.6.egg-info/installed-files.txt../bson/json_util.pyで確認できます

誰かが私が間違っていることを理解するのに役立つヒントを手に入れましたか?

更新:これについてもう少し詳しく説明しました-私はこれをうまく機能させることができました:

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

4

3 に答える 3

15

pymongoではなくbsonからインポートしたいようです。最近、json_utilがそのモジュールに移動されたと思います。 https://pymongo.readthedocs.io/en/stable/api/bson/json_util.html

于 2012-11-06T01:53:51.740 に答える
5

この問題に関する投稿をかなり多く見ましたが、問題は解決しませんでした。私のために働いたのは、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))
于 2020-01-27T20:44:03.903 に答える
1

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))
于 2020-03-17T06:20:58.080 に答える