MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Existe-t-il un moyen de stocker des objets python directement dans mongoDB sans les sérialiser

Il n'existe aucun moyen de stocker un objet dans un fichier (base de données) sans le sérialiser. Si les données doivent passer d'un processus à un autre ou à un autre serveur, elles devront être sérialisées sous une forme quelconque pour être transmises. Puisque vous posez des questions sur MongoDB, les données seront absolument sérialisées sous une forme quelconque afin d'être stockées dans la base de données MongoDB. Lors de l'utilisation de MongoDB, il s'agit de BSON .

Si vous demandez réellement s'il y aurait un moyen de stocker une forme plus brute d'un objet Python dans un document MongoDB, vous pouvez insérer un Binary champ dans un document qui peut contenir toutes les données que vous souhaitez. Il n'est en aucun cas directement interrogeable sous cette forme, vous perdez donc potentiellement beaucoup des avantages de l'utilisation d'une base de données de documents NoSQL comme 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)})