4

DjangoでMongoDBカーソルをシリアライズしようとしています

import json
from pymongo import json_util

results = json.dumps(results, default=json_util.default, separators=(',', ':'))

resultsは次のようなものです

[{u'_id': ObjectId('4f7c0f34705ff8294a00006f'),
  u'identifier': u'1',
  u'items': [{u'amount': 9.99, u'name': u'PapayaWhip', u'quantity': 1}],
  u'location': None,
  u'timestamp': datetime.datetime(2012, 4, 4, 10, 7, 0, 596000),
  u'total': 141.25}]

編集:次のようなものを使用して取得

from django.db import connections

connection = connections['default']

results = connection.get_collection('papayas_papaya')
results = results.find({
    'identifier': '1',
})

私に与えます

TypeError: <django_mongodb_engine.utils.DebugCursor object> is not JSON serializable

私が間違っていることを誰かが知っていますか?

json_utilを使用すると、 MongoDBドキュメントをシリアライズする必要があります。おそらく私の問題は、カーソルをシリアライズしようとしていることです。(カーソルからドキュメントを取得するにはどうすればよいですか?単純なタプルの「キャスト」ですか?)

乾杯!

4

2 に答える 2

5

1つのデータだけをシリアル化しようとしていますか?もしそうなら、ただ変更してください

results = results.find({
    'identifier': '1',
})

results = results.find_one({
    'identifier': '1',
})

(ただし、実際には、結果とコレクションを表す変数を区別する必要があります。)

複数のデータをシリアル化しようとしている場合は、を保持してfindからカーソルを繰り返し処理し、各データをシリアル化できます。

serialized_results = [json.dumps(result, default=json_util.default, separators=(',', ':')) for result in results]
于 2012-04-16T11:16:50.150 に答える
0

実際には、Djangoのシリアル化システム、または少なくともプラグイン可能なJSONシリアル化アプリを使用する必要があります。

于 2012-04-16T18:37:51.243 に答える