MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

A inserção do mongodb mostra 'strings em documentos devem ser UTF-8 válidos'


Se você estiver usando PyMongo e Python 2.x, você deve usar str em strings utf-8 ou unicode. Consulte:http://api.mongodb .org/python/current/tutorial.html#a-note-on-unicode-strings

Se data é um dict com várias strings, você pode converter todas elas em unicode usando a seguinte função:
def convert2unicode(mydict):
    for k, v in mydict.iteritems():
        if isinstance(v, str):
            mydict[k] = unicode(v, errors = 'replace')
        elif isinstance(v, dict):
            convert2unicode(v)

for code, data in dict_data.items(): 
    try:
        convert2unicode(data)
        collection2.insert({'_id':code,'data': data})
    except Exception as e:
        print code,'>>>>>>>', str(e)
        sys.exit()

O código anterior converterá todos os valores str em unicode, as "chaves" permanecem intocadas, dependendo da causa raiz, você também deve converter as "chaves".