python – Pymongo BSON二进制保存和检索?
发布时间:2020-12-20 11:33:45 所属栏目:Python 来源:网络整理
导读:我在 Python中使用MongoDB尝试紧紧保存一系列浮点数. 我可以正确创建和存储* 但我无法以可用的格式检索数据. import random,array,pymongo from bson.binary import Binary as BsonBinary con = pymongo.Connection('localhost',27017) mm = con['testDataba
我在
Python中使用MongoDB尝试紧紧保存一系列浮点数.
我可以正确创建和存储* 但我无法以可用的格式检索数据. >>> import random,array,pymongo >>> from bson.binary import Binary as BsonBinary >>> con = pymongo.Connection('localhost',27017) >>> mm = con['testDatabase'] >>> vals = [random.random() *100 for x in range(1,5)] >>> vals [2.9962593,64.5582810776,32.3781311717,82.0606953423] >>> varray = array.array('f',vals) >>> varray array('f',[2.9962593,82.0606953423]) >>> vstring = varray.tostring() >>> vstring 'xb7xc2?@xd7x1dx81B5x83x01Bx13x1fxa4B' >>> vbson = BsonBinary(vstring,5) >>> vbson Binary('xb7xc2?@xd7x1dx81B5x83x01Bx13x1fxa4B',5) >>> doc1 = { 'something': 1,'else' : vbson} >>> doc1 {'something': 1,'else': Binary('xb7xc2?@xd7x1dx81B5x83x01Bx13x1fxa4B',5)} >>> mm.test1.insert(doc1) ObjectID('530f7af1d809d80d3db1f635') >>> gotdoc = mm.test1.find_one() >>> gotdoc {u'_id': ObjectId('530f7af1d809d80d3db1f635'),u'something': 3,u'else': Binary('xb7xc2?@xd7x1dx81B5x83x01Bx13x1fxa4B',5)} >>> gotfield = gotdoc['else'] >>> gotfield Binary('xb7xc2?@xd7x1dx81B5x83x01Bx13x1fxa4B',5) >>> from bson import BSON >>> BSON.decode(gotfield) Traceback (most recent call last): File "<stdin>",line 1,in <module> TypeError: unbound method decode() must be called with BSON instance as first argument (got Binary instance instead) >>> gotfield.decode() Traceback (most recent call last): File "<stdin>",in <module> UnicodeDecodeError: 'ascii' codec can't decode byte 0xb7 in position 0: ordinal not in range(128) >>> 一旦我得到我的Python字符串,我就可以得到我的随机浮点数组.但是怎么样? 解决方法
让我们来看看错误:
>出现第一个错误只是因为您需要一个实际的BSON对象.请注意,您从未编码任何数据 – 创建bson.binary.Binary对象并不意味着调用BSON.encode(). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |