MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Question sur le paramètre safe=True pour l'opération de mise à jour de mongodb

try et except ne provoque jamais la levée d'une exception. Ils gèrent simplement les exceptions levées.

Si update lève une exception en cas d'échec, le except gérera l'exception, puis la boucle continuera (sauf si vous utilisez raise dans le except clause).

Si update ne lève pas d'exception en cas d'échec, mais renvoie à la place None (ou quelque chose comme ça), et vous voulez pour lancer une exception, vous pouvez utiliser :

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

Notez que vous devez toujours spécifier l'exception que vous souhaitez intercepter et entourer uniquement les lignes de code où vous souhaitez l'intercepter avec try , afin de ne pas masquer d'autres erreurs dans votre code :

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

Voir le try Déclaration , Exceptions intégrées , et Erreurs et exceptions .