sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Hay alguna manera de almacenar objetos de python directamente en mongoDB sin serializarlos?

No hay forma de almacenar un objeto en un archivo (base de datos) sin serializarlo. Si los datos deben moverse de un proceso a otro o a otro servidor, será necesario serializarlos de alguna forma para poder transmitirlos. Como está preguntando por MongoDB, los datos se serializarán absolutamente de alguna forma para almacenarse en la base de datos de MongoDB. Al usar MongoDB, es BSON .

Si realmente está preguntando si habría una forma de almacenar una forma más cruda de un objeto Python en un documento MongoDB, puede insertar un Binary campo en un documento que puede contener cualquier dato que desee. No se puede consultar directamente de ninguna manera en ese formulario, por lo que potencialmente está perdiendo muchos de los beneficios de usar una base de datos de documentos NoSQL como 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)})