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

È stato utile?

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
scroll top