将monary与pymongo进行比较以获取mongodb

时间:2017-07-25 07:40:56

标签: python mongodb pymongo monary

我用谷歌搜索在python中处理mongodb,接下来出现了 https://bitbucket.org/djcbeach/monary/wiki/Home

基于这个链接monary假设比pymongo好,但是这个链接的比较来自查询,我们希望看到写入mongodb(插入)的差异所以我们根据链接的示例代码做了以下

from monary import Monary
from monary import monary_param as mp
import numpy as np
import time

NUM_BATCHES = 3500
BATCH_SIZE = 200

start = time.time()
types = ["float64"] * 5  
fields = ["x1", "x2", "x3", "x4", "x5"] 
global params
with Monary("127.0.0.1") as monary:
    for i in xrange(NUM_BATCHES):
        for l in xrange(BATCH_SIZE):
            stuff = [ ]
            for j in xrange(5):
                record = dict(x1=random.uniform(0, 1),
                              x2=random.uniform(0, 2),
                              x3=random.uniform(0, 3),
                              x4=random.uniform(0, 4),
                              x5=random.uniform(0, 5)
                         )
                stuff.append(record)   
            params = mp.MonaryParam.from_lists(np.array(stuff), fields) 
            monary.insert('mydb','collection',params) 
end =time.time()
print 'Total time elapsed: %02d:%02d'% divmod((end - start), 60) 

为什么我们不断收到错误?

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-58-9ad6ec8c81e5> in <module>()
     25                 stuff.append(record)
     26                 #print len(np.array(stuff.append(record)))
---> 27             params = mp.MonaryParam.from_lists(np.array(stuff), fields)
     28             monary.insert('mydb','collection',params)
     29 # with Monary("127.0.0.1") as monary:

/Users/kelvin/anaconda/envs/gl-env/lib/python2.7/site-packages/monary/monary_param.pyc in from_lists(cls, data, fields, types)
     77                 raise ValueError(
     78                     "Data and fields must be of equal length.")
---> 79             return cls.from_groups(zip(data, fields))
     80         else:
     81             if not (len(data) == len(fields) == len(types)):

/Users/kelvin/anaconda/envs/gl-env/lib/python2.7/site-packages/monary/monary_param.pyc in from_groups(cls, groups)
     93          - `groups`: List of items to be passed to MonaryParam.
     94         """
---> 95         return list(map(lambda x: cls(x), groups))
     96 
     97     def __len__(self):

/Users/kelvin/anaconda/envs/gl-env/lib/python2.7/site-packages/monary/monary_param.pyc in <lambda>(x)
     93          - `groups`: List of items to be passed to MonaryParam.
     94         """
---> 95         return list(map(lambda x: cls(x), groups))
     96 
     97     def __len__(self):

/Users/kelvin/anaconda/envs/gl-env/lib/python2.7/site-packages/monary/monary_param.pyc in __init__(self, array, field, mtype)
     39             if len(array) == 2:
     40                 array, field = array
---> 41                 mtype = str(array.data.dtype)
     42             else:
     43                 array, field, mtype = array

AttributeError: 'dict' object has no attribute 'data

0 个答案:

没有答案