Ошибка при вставке данных с помощью цифровых клавиш в mongodb (данные GPS в словаре Python) - PullRequest
0 голосов
/ 06 октября 2019

Я пытаюсь сохранить метаданные изображения в MongoDB, используя pymongo. Но я получаю сообщение об ошибке при вставке.

#Data in Dictionary
gps = {'GPSInfo': {1: 'N', 2: ((38, 1), (54, 1), (3540, 100)), 3: 'E', 4: ((1, 1), (26, 1), (1920, 100)), 5: b'\x00', 6: (0, 1), 7: ((11, 1), (7, 1), (47, 1)), 16: 'T', 17: (5338, 65), 29: '2011:09:04'}}


import pymongo
mng_client = pymongo.MongoClient('localhost', 27017)
mng_db = mng_client['pic_db'] 
collection_name = 'pic_audit_log2' 
db_cm = mng_db[collection_name]


# Insert data from a dictionary
db_cm.remove()
db_cm.insert(gps)

Ошибка

InvalidDocument: documents must have only string keys, key was 1

Нужно ли менять все числовые ключи словаря в строки? Это работает, когда я так делаю.

d = {str(a):{str(c):d for c,d in b.items()} if isinstance(b,dict) else b for a,b in gps.items()}

# Insert data from dictionary
db_cm.remove()
db_cm.insert(d)

Есть ли другой лучший вариант?

1 Ответ

1 голос
/ 08 октября 2019

Оболочка mongo преобразует целые числа в строки для вас при вставке данных, но pymongo - нет. Ваш обходной путь, вероятно, так же хорош, как и любой.

...