Wir*_*rie 33
没有一种方法可以将对象存储在文件(数据库)中而无需对其进行序列化.如果数据需要从一个进程移动到另一个进程或另一个进程,则需要以某种形式将其序列化以进行传输.由于您询问的是MongoDB,因此数据绝对会以某种形式序列化,以便存储在MongoDB数据库中.使用MongoDB时,它是BSON.
如果您实际上询问是否有办法在MongoDB文档中存储更原始形式的Python对象,您可以在文档中插入一个Binary字段,该文档可以包含您想要的任何数据.它不能以任何形式直接查询,因此您可能会失去使用像MongoDB这样的NoSQL文档数据库的诸多好处.
>>> 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)})
Run Code Online (Sandbox Code Playgroud)
假设您对 mongoDB 不是特别感兴趣,您可能不是在寻找 BSON。与 JSON 相比,BSON 只是一种不同的序列化格式,旨在提高速度和空间效率。另一方面,pickle对 python 对象进行更多的直接编码。
但是,请在采用之前进行速度测试,pickle以确保它更适合您的用例。
| 归档时间: |
|
| 查看次数: |
16234 次 |
| 最近记录: |