MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Frage zum Parameter safe=True für den Update-Vorgang von mongodb

try und except niemals eine Ausnahme auslösen. Sie behandeln einfach ausgelöste Ausnahmen.

Wenn update löst bei einem Fehler eine Ausnahme aus, die except behandelt die Ausnahme, dann wird die Schleife fortgesetzt (es sei denn, Sie verwenden raise im except Klausel).

Wenn update löst bei einem Fehler keine Ausnahme aus, sondern gibt stattdessen None zurück (oder so ähnlich), und Sie wollen Um eine Ausnahme auszulösen, können Sie Folgendes verwenden:

if coll.update(...) is None: # or whatever it returns on failure
    raise ValueError # or your custom Exception subclass

Beachten Sie, dass Sie immer angeben sollten, welche Ausnahme Sie abfangen möchten, und nur die Codezeilen, in denen Sie sie abfangen möchten, mit try umgeben , damit Sie keine anderen Fehler in Ihrem Code verbergen:

for record in coll.find(<some query here>):
   #Code here
   #...
   #...
   try:
       coll.update({ '_id' : record['_id'] },record,safe=True)
   except SpecificException:
        #Handle exception here
   except OtherSpecificException:
        #Handle exception here
   else:
        #extra stuff to do if there was no exception

Siehe try Aussage , Integrierte Ausnahmen , und Fehler und Ausnahmen .