MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Existe uma maneira de armazenar objetos python diretamente no mongoDB sem serializá-los


Não há como armazenar um objeto em um arquivo (banco de dados) sem serializá-lo. Se os dados precisarem ser movidos de um processo para outro ou para outro servidor, eles precisarão ser serializados de alguma forma para serem transmitidos. Como você está perguntando sobre o MongoDB, os dados serão absolutamente serializados de alguma forma para serem armazenados no banco de dados do MongoDB. Ao usar o MongoDB, é BSON .

Se você está realmente perguntando se haveria uma maneira de armazenar uma forma mais bruta de um objeto Python em um documento do MongoDB, você pode inserir um Binary campo em um documento que pode conter quaisquer dados que você desejar. Ele não pode ser consultado diretamente dessa forma, então você está potencialmente perdendo muitos dos benefícios de usar um banco de dados de documentos NoSQL como o 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)})