MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Gibt es eine Möglichkeit, Python-Objekte direkt in MongoDB zu speichern, ohne sie zu serialisieren?

Es gibt keine Möglichkeit, ein Objekt in einer Datei (Datenbank) zu speichern, ohne es zu serialisieren. Wenn die Daten von einem Prozess zu einem anderen Prozess oder zu einem anderen Server verschoben werden müssen, müssen sie in irgendeiner Form serialisiert werden, um übertragen zu werden. Da Sie nach MongoDB fragen, werden die Daten unbedingt in irgendeiner Form serialisiert, um in der MongoDB-Datenbank gespeichert zu werden. Bei Verwendung von MongoDB ist es BSON .

Wenn Sie tatsächlich fragen, ob es eine Möglichkeit gibt, eine rohere Form eines Python-Objekts in einem MongoDB-Dokument zu speichern, können Sie eine Binary einfügen Feld in ein Dokument, das beliebige Daten enthalten kann. Es ist in dieser Form in keiner Weise direkt abfragbar, sodass Sie möglicherweise viele Vorteile der Verwendung einer NoSQL-Dokumentendatenbank wie MongoDB verlieren.

>>> 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)})