Nie ma sposobu na zapisanie obiektu w pliku (bazie danych) bez serializacji. Jeśli dane muszą zostać przeniesione z jednego procesu do drugiego lub innego serwera, będzie to wymagać serializacji w jakiejś formie, która ma zostać przesłana. Ponieważ pytasz o MongoDB, dane będą absolutnie serializowane w jakiejś formie, aby mogły być przechowywane w bazie danych MongoDB. Podczas korzystania z MongoDB jest to BSON.
Jeśli faktycznie pytasz o to, czy istnieje sposób przechowywania bardziej surowej postaci obiektu Python w dokumencie MongoDB, możesz wstawić pole Binary
do dokumentu, który może zawierać dowolne dane, które chcesz . W tej formie nie można jej bezpośrednio wysyłać w żaden sposób, więc potencjalnie tracisz wiele korzyści z używania bazy danych dokumentów NoSQL, na przykład MongoDB.
>>> 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)})
Nie jest jasne, co próbujesz zrobić, czego próbowałeś i co nie działało. Edytuj pytanie, aby dołączyć te pomocne informacje. :) – WiredPrairie
Jeśli robisz to dla wydajności, [ten benchmark] (http://kovshenin.com/2010/pickle-vs-json-which-is-faster/) może cię zaskoczyć. – georg
@ thg435: Dzięki za link, będę o tym pamiętał dla projektu, w którym operacje wejścia/wyjścia będą bardziej krytyczne dla wykonania mojego projektu! – chiffa