2013-07-23 4 views
0

잘못된 행을 전달하면 예외가 throw됩니다. NULL을 반환하여 스크립트의 나머지 부분을 처리하는 데 사용할 수 있기를 바랍니다.Pymongo에서 NULL이 아닌 예외를 반환하는 방법

module_id = module_id 

mongo_document = mongo_collection.find_one({ '_id': '%s' % module_id}, { '_id':0, 'svn_path':1 }) 
myvar = mongo_document 
for key, value in myvar.iteritems(): 
    print value 
+1

'예외'를 ​​잡으시겠습니까? – roippi

+1

실제로 발생한 예외는 무엇입니까? 일치하는 콜렉션이 발견되지 않으면'find_one'가'None'을 리턴 할 수 있습니다. https://github.com/mongodb/mongo-python-driver/blob/master/pymongo/collection.py#L601은'myvar'' None'입니까? 그리고 당신은'None'에'iteritems '를 호출하려고합니까? – dm03514

+0

나는 바보예요, 당신 말이 맞아요. 아무도 돌려주지 않습니다. 나는 이것에 대한 검사를하지 않았고, 나는 검사를하지 않고 그 값을 인쇄하려고 시도했다. – luckytaxi

답변

1

실제로 문제는 find_one 기능에 없습니다. 존재하지 않는 값을 물어 보면 python에 None 값이 반환됩니다. 예외가 실제로 for 루프에 있다고 추측합니다. 그래서 나는 이렇게 할 것입니다 :

module_id = module_id 

mongo_document = mongo_collection.find_one({ '_id': '%s' % module_id}, { '_id':0, 'svn_path':1 }) 
myvar = mongo_document 
if myvar is not None: 
    for key, value in myvar.iteritems(): 
     print value 
eilf: 
    print "sorry i could find that id" 
+0

음, 그게다고, 나는'myvar'을 확인하는 걸 잊었다 – luckytaxi

+0

내 대답이 당신을 받아 들일 수/그것을 확인할 수 있다면 :) –

+0

네, 몇 분 더 기다려야 해. – luckytaxi

관련 문제