MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

C'è un modo per archiviare oggetti Python direttamente in mongoDB senza serializzarli

Non esiste un modo per archiviare un oggetto in un file (database) senza serializzarlo. Se i dati devono essere spostati da un processo a un altro processo oa un altro server, dovranno essere serializzati in qualche forma per essere trasmessi. Dal momento che stai chiedendo di MongoDB, i dati verranno assolutamente serializzati in qualche forma per essere archiviati nel database MongoDB. Quando si utilizza MongoDB, è BSON .

Se stai effettivamente chiedendo se ci sarebbe un modo per memorizzare una forma più grezza di un oggetto Python in un documento MongoDB, puoi inserire un Binary campo in un documento che può contenere tutti i dati che desideri. Non è direttamente interrogabile in alcun modo in quella forma, quindi stai potenzialmente perdendo molti dei vantaggi dell'utilizzo di un database di documenti NoSQL come 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)})