Ответ 1
Невозможно сохранить объект в файле (базе данных) без его сериализации. Если данные должны переходить от одного процесса к другому процессу или другому серверу, его необходимо будет сериализовать в какой-либо форме для передачи. Поскольку вы спрашиваете о MongoDB, данные будут абсолютно сериализованы в той или иной форме, чтобы быть сохраненными в базе данных MongoDB. При использовании MongoDB он BSON.
Если вы действительно спрашиваете, есть ли способ сохранить более необработанную форму объекта Python в документе MongoDB, вы можете вставить поле Binary
в документ, который может содержать любые данные, которые вы бы как. Он не может быть напрямую запрошен каким-либо образом в этой форме, поэтому вы потенциально теряете много преимуществ использования базы данных документов NoSQL, таких как 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)})