Мне нужно вставить список словарей с таким синтаксисом (у меня более 6500 таких слов):
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.
Что я полностью понимаю и знаю, что не могу вставить в mongoDb с помощью клавиши 'int'. Но какова альтернатива?
Спасибо.