将字典列表插入mongodb并删除int键

时间:2019-05-31 08:41:31

标签: python mongodb dictionary insert int

我必须插入具有这种语法的字典列表(我有超过6500个字典,像这3个字典):

0: {208271891: {'bra': 'Solarmax',
             'bri': 4,
             'eur': 95.4,
             'max': 1980,
             'nam': '2000S',
             'pan': {'bra': 'Sanyo',
                     'bri': 3,
                     'eff': 16,
                     'h': 861,
                     'hea': 50,
                     'mni': 1,
                     'mnm': 'free standing',
                     'n': 7,
                     'nam': 'HDE1 230',
                     'slo': 35,
                     't': -0.3,
                     'w': 1610,
                     'wp': 230},
             'pha': 1,
             'rat': 0.81,
             'wp': 1610}},

1: {208271900: {'bra': 'Solarmax',
             'bri': 4,
             'eur': 95.4,
             'max': 1980,
             'nam': '2000S',
             'pan': {'bra': 'Sanyo',
                     'bri': 3,
                     'eff': 16,
                     'h': 861,
                     'hea': -40,
                     'mni': 1,
                     'mnm': 'free standing',
                     'n': 9,
                     'nam': 'HDE1 230',
                     'slo': 30,
                     't': -0.3,
                     'w': 1610,
                     'wp': 230},
             'pha': 1,
             'rat': 1.05,
             'wp': 2070}},

 2: {208271892: {'bra': 'Solarmax',
             'bri': 4,
             'eur': 95.4,
             'max': 1980,
             'nam': '2000S',
             'pan': {'bra': 'Sanyo',
                     'bri': 3,
                     'eff': 16,
                     'h': 861,
                     'hea': 50,
                     'mni': 1,
                     'mnm': 'free standing',
                     'n': 9,
                     'nam': 'HDE1 230',
                     'slo': 30,
                     't': -0.3,
                     'w': 1610,
                     'wp': 230},
             'pha': 1,
             'rat': 1.05,
             'wp': 2070}}

我试图用dict.pop()和'del'删除密钥,但收到此错误:'TypeError:'int'对象不支持项目删除'。

slMetadata = {}    

for row in metadatas: #metadatas coming from mysql

   mid = int(row['met_id'])
   slMetadata.update(mid = mid)

   bsInv = {
          mid: 
             {
             'wp' : wp,
             'bra': str(row['invbraname']),
             'bri': int(row['inm_bra_id']),
             'nam': str(row['inm_name']),
             'pha': int(row['inm_phases']),
             'max': int(row['inm_maximal_power']),
             'eur': float(row['inm_euro_efficiency']),
             'pan':
                  {
                  'n'  : int(row['inv_pan_numbers']),
                  'hea': int(row['inv_pan_heading']),
                  'slo': int(row['inv_pan_slope']),
                  'mni': int(row['inv_mnt_id']),
                  'mnm': str(row['mnt_name']),
                  'bra': str(row['panbraname']),
                  'bri': int(row['pan_bra_id']),
                  'nam': str(row['pan_name']),
                  'wp' : int(row['pan_wc']),
                  'eff': int(row['efficiency']),
                  't'  : float(row['coefficient_p']),
                  'w'  : int(row['pan_width']),
                  'h'  : int(row['pan_height'])
                  }
             }         
        }
i = 0
dictToInsert = {}
for dic in slMetadata:
    dictToInsert[i] = slMetadata[dic]
    i += 1

if len(dictToInsert) > 0:
   insertion = dbCollection.insert_many(dictToInsert)

我想要的是将所有这些字典插入mongoDb中,但出现以下错误:bson.errors.InvalidDocument:文档必须仅具有字符串键,键为0。

我完全了解并知道我无法使用“ int”键插入到mongoDb中。但是还有什么选择呢?

谢谢。

1 个答案:

答案 0 :(得分:0)

Try

dictToInsert[str(i)] = slMetadata[dic]

instead of

dictToInsert[i] = slMetadata[dic]