1

I googled for dealing with mongodb in python and the following came up https://bitbucket.org/djcbeach/monary/wiki/Home

Based on this link monary suppose outperform pymongo, but the comparisons in this link were from queries, we want to see the difference in writing to mongodb (insert) so we made the following according to example code from link

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) 

Why we keep getting errors?

---------------------------------------------------------------------------
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
ikel
  • 1,790
  • 6
  • 31
  • 61
  • Errors meaning, what exactly?? It's not meant to be a "replacement" or a "drop in". But rather the "intent" is specific binding to the formats as used by `numpy`. – Neil Lunn Jul 25 '17 at 07:46

0 Answers0