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 übertragen werden müssen, muss sie in irgendeiner Form serialisiert werden, um übertragen zu werden. Da Sie nach MongoDB fragen, werden die Daten in irgendeiner Form serialisiert, um in der MongoDB-Datenbank gespeichert zu werden. Wenn Sie MongoDB verwenden, ist es BSON. Wenn Sie sich fragen, ob es eine Möglichkeit geben könnte, eine mehr rohe Form eines Python-Objekts in einem MongoDB-Dokument zu speichern, können Sie ein Binary
-Feld in ein Dokument einfügen, das beliebige Daten enthalten kann . Es ist in diesem Formular in keiner Weise direkt abfragbar, sodass Sie möglicherweise viele Vorteile 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)})
Es ist gar nicht klar, was Sie zu tun versuchen, was Sie versucht haben und was nicht. Bitte bearbeiten Sie die Frage, um diese hilfreichen Details hinzuzufügen. :) – WiredPrairie
Wenn Sie das für die Leistung tun, könnte [dieser Benchmark] (http://kovshenin.com/2010/pickle-vs-json-which-is-faster/) Sie überraschen. – georg
@ thg435: Danke für den Link, ich werde es bei einem Projekt berücksichtigen, bei dem I/O für die Leistung meines Projekts kritischer wäre! – chiffa