MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Pergunta sobre o parâmetro safe=True para operação de atualização do mongodb


try e except nunca faça com que uma exceção seja lançada. Eles simplesmente lidam com exceções lançadas.

Se update lança uma exceção em caso de falha, o except irá tratar a excepção, então o loop irá continuar (a menos que use raise no except cláusula).

Se update não lança uma exceção em caso de falha, mas retorna None (ou algo parecido) e você quer para lançar uma exceção, você pode usar:
if coll.update(...) is None: # or whatever it returns on failure
    raise ValueError # or your custom Exception subclass

Observe que você deve sempre especificar qual exceção deseja capturar e apenas cercar as linhas de código onde deseja capturá-la com try , para não ocultar outros erros em seu código:
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

Consulte o try Declaração , Exceções incorporadas e Erros e exceções .