Problema di codifica inserendo in mongodb con Python
Domanda
Ho un elenco di dizionari data_dump
che contiene dizionari come:
d = {"ids": s_id, "subject": subject}
.
Sto seguendo il tutorial che prova a fare un inserto in massa:
connection = Connection(host,port)
db = connection['clusters']
posts = db.posts
posts.insert(data_dump)
.
che non riesce con il seguente errore:
File "/usr/local/lib/python2.7/dist-packages/pymongo/collection.py", line 312, in insert
continue_on_error, self.__uuid_subtype), safe)
bson.errors.InvalidStringData: strings in documents must be valid UTF-8
.
Si prega di avvisare. Grazie
Soluzione
Risolto: Bene .. ha forzato la codifica di 1) Spogliare la stringa di simboli ecc poi 2) Conversione ASCII in UTF-8 da Raw.Decode ('ASCII') e quindi decoded_String.code ('UTF8') Grazie ragazzi .. :)
Altri suggerimenti
Non potevo permettermi di perdere i caratteri non UTF-8.Quindi ho scelto di convertire la stringa in binario, invece.
Secondo il tuo esempio,
>>> print subject
u'Math'
>>> d = {"ids": s_id, "subject": bson.Binary(str(subject))} # convert subject from unicode to Binary
.
Non è possibile eseguire ricerche di testo completo, che è l'ultima caratteristica del Mongo, ma funziona bene per tutto il resto.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow