0
MongoDB를 수집 반복 :UnicodeDecodeError 동안 나는이 같은 것을 사용하여 파이썬 2.7 pymongo-2.3를 사용하여 MongoDB를 데이터베이스 쿼리하려고
from pymongo import Connection
connection = Connection()
db = connection['db-name']
collections = db.subName
entries = collections['collection-name']
print entries
# > Collection(Database(Connection('localhost', 27017), u'db-name'), u'subName.collection-name')
for entry in entries.find():
pass
반복자 내가 entry
로 아무것도하지 않더라도 실패를 개체 :
Traceback (most recent call last):
File "/Users/../mongo.py", line 27, in <module>
for entry in entries.find():
File "/Library/Python/2.7/site-packages/pymongo-2.3-py2.7-macosx-10.8-intel.egg/pymongo/cursor.py", line 778, in next
File "/Library/Python/2.7/site-packages/pymongo-2.3-py2.7-macosx-10.8-intel.egg/pymongo/cursor.py", line 742, in _refresh
File "/Library/Python/2.7/site-packages/pymongo-2.3-py2.7-macosx-10.8-intel.egg/pymongo/cursor.py", line 686, in __send_message
File "/Library/Python/2.7/site-packages/pymongo-2.3-py2.7-macosx-10.8-intel.egg/pymongo/helpers.py", line 111, in _unpack_response
UnicodeDecodeError: 'utf8' codec can't decode byte 0xfc in position 744: invalid start byte
나는 쿼리하려는 데이터베이스의 작성자가 아닙니다. 내가 뭘 잘못하고 어떻게 해결할 수 있는지 누가 알 수 있습니까? 감사.
업데이트 : 나는 try-except
를 사용하여 pymongo/helpers.py
에서 문제가되는 라인을 통해 건너 관리,하지만 데이터 손실을 포함하지 않는 솔루션을 선호하는 것이다.
try:
result["data"] = bson.decode_all(response[20:], as_class, tz_aware, uuid_subtype)
except:
result["data"] = []
죄송합니다. 속도를 위해 collection.find(). forEach (function (doc) {print ("1");})를 시도했으며 오류가 없었습니다. 파이썬과 관련된 것 같습니다. –
좋아, 파이썬에서는 entry.find()에 항목을 넣을 수 있나? sort ([('_ id', 1)]) : print entry [ '_ id']'? 그것은 문제가되는 문서 바로 앞에 _id를 줄 것입니다. 그런 다음 그 _id와 쉘에서'collection.findOne ({_ id : {$ gt : my_id}})'을 가져 와서 여기에 게시하십시오. –
놀랍게도 이것은 콘솔에서 (또한 Python에서도) 실패합니다 :'collection.findOne ({_ id : {$ gt : ObjectId ("4ebcd5f0ed7c5031a103ba68")}})'나는 왜 이것을 처음으로 잡지 못했는지 모르겠습니다. 나는 시험해 보았다. '디코딩이 실패했습니다. 아마도 잘못된 utf-8 문자열'- 쓰레기 더미 - 왜 : TypeError : UTF-8 문자 0x1234567 too large src/mongo/shell/utils.js : 1018' –