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

erro pymongo:bson.errors.InvalidBSON:codec 'utf8' não pode decodificar byte 0xa1 na posição 25:byte inicial inválido


Você precisa passar o argumento unicode_decode_error_handler para o MongoClient e usar pelo menos o pymongo 3.5.1.
import pymongo
import json
from pymongo import MongoClient

if __name__ == '__main__':

    client = MongoClient(
        host="whatever_your_host_is",
        maxPoolSize=50,
        unicode_decode_error_handler='ignore'
    )


    my_db=client['my_db']
    collection=my_db['my_collection']

    cursor = collection.find({"whatever": "some_stuff"})

    for document in cursor:
          print(document)

Parece que 'ignore' é definido por padrão no Python 2.7, mas no Python 3.6.1 você precisa fazer isso sozinho. Isso ignorará os erros Unicode e permitirá que o cursor continue iterando, o pymongo tentará fazer o possível para reconstruir os dados JSON.