18

BSONを使用して、Pythonオブジェクト(より具体的には辞書)をMongoDBのバイナリとして保存できることをどこかで読みました。ただし、現在、これに関連するドキュメントは見つかりません。

これをどのように正確に行うことができるか、誰にもわかりますか?

4

3 に答える 3

37

オブジェクトをシリアル化せずにファイル (データベース) に格納する方法はありません。データをあるプロセスから別のプロセスまたは別のサーバーに移動する必要がある場合は、何らかの形式でシリアル化して送信する必要があります。MongoDB について質問しているため、MongoDB データベースに格納するために、データは何らかの形で絶対にシリアル化されます。MongoDB を使用する場合はBSONです。

より生の形式の Python オブジェクトを MongoDB ドキュメントに格納する方法があるかどうかを実際に尋ねている場合はBinary、任意のデータを含めることができるフィールドをドキュメントに挿入できます。この形式では直接クエリを実行することはできないため、MongoDB のような NoSQL ドキュメント データベースを使用することによる多くの利点が失われる可能性があります。

>>> from pymongo import MongoClient
>>> client = MongoClient('localhost', 27017)
>>> db = client['test-database']
>>> coll = db.test_collection    
>>> # the collection is ready now 
>>> from bson.binary import Binary
>>> import pickle
>>> # create a sample object
>>> myObj = {}
>>> myObj['demo'] = 'Some demo data'
>>> # convert it to the raw bytes
>>> thebytes = pickle.dumps(myObj)
>>> coll.insert({'bin-data': Binary(thebytes)})
于 2013-08-06T21:11:01.850 に答える