0

次のようなものを使用して、Python 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

私はクエリしようとしているデータベースの作成者ではありません。私が間違っていることと、それを修正する方法を誰かが知っていますか? ありがとう。


更新pymongo/helpers.py: を使用して問題のある行をスキップすることができましtry-exceptたが、データの損失を伴わないソリューションを希望します。

try:
    result["data"] = bson.decode_all(response[20:], as_class, tz_aware, uuid_subtype)
except:
    result["data"] = []
4

1 に答える 1

2

mongo シェルを使用して同じ操作を試すことはできますか? それがPython固有のものなのか、それともデータベースの破損なのかを調べたい:

$ mongo db-name  
> var collection = db.getCollection('subName.collection-name')  
> collection.find().forEach(function(doc) { printjson(doc); })
于 2012-10-05T21:40:30.640 に答える