2013-07-23 57 views
0

如果我傳遞一個無效行,它將引發異常。我希望它返回NULL,以便我可以使用它來進一步處理其餘的腳本。如何返回NULL而不是Pymongo的例外

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

catch''Exception'? – roippi

+1

實際上正在提出哪個異常?如果沒有找到匹配的集合,它看起來像'find_one'可能已經返回'None'。 https://github.com/mongodb/mongo-python-driver/blob/master/pymongo/collection.py#L601,是'myvar''沒有'?你試圖在'None'上調用'iteritems'? – dm03514

+0

我是個白癡,你是對的,它沒有任何回報。我沒有檢查這一點,我繼續前進,試圖打印的價值沒有檢查。 – luckytaxi

回答

1

其實你的問題不在find_one函數中。當你問一個不存在的值時,它的返回值是一個None值給python,我猜你的異常實際上是在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