Вставка проблемы кодирования в MongoDB с Python - PullRequest
3 голосов
/ 26 января 2012

У меня есть список словарей data_dump, который содержит такие словари, как:

d = {"ids": s_id, "subject": subject}

Я слежу за учебником, пытающимся выполнить массовую вставку:

connection = Connection(host,port)
db = connection['clusters']
posts = db.posts
posts.insert(data_dump)

Что не удаетсясо следующей ошибкой:

 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

Пожалуйста, сообщите.Спасибо

Ответы [ 2 ]

3 голосов
/ 26 января 2012

Решено: Ну .. форсировала кодировку 1) зачистка строки символов и т. Д. а потом 2) преобразование ascii в utf-8 с помощью raw.decode ('ascii') и затем decoded_string.encode ('utf8') Спасибо, ребята ..:)

0 голосов
/ 20 июня 2013

Я не мог позволить себе потерять не UTF-8 символов. Поэтому вместо этого я решил преобразовать строку в двоичную.

Согласно вашему примеру,

>>> print subject
u'Math'
>>> d = {"ids": s_id, "subject": bson.Binary(str(subject))} # convert subject from unicode to Binary

Вы не можете запустить полнотекстовый поиск, который является последней функцией в Mongo, но он хорошо работает для всего остального.

...