MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Domanda sul parametro safe=True per l'operazione di aggiornamento di mongodb

try e except non causare mai la generazione di un'eccezione. Gestiscono semplicemente le eccezioni generate.

Se update genera un'eccezione in caso di errore, except gestirà l'eccezione, quindi il ciclo continuerà (a meno che tu non usi raise nel except clausola).

Se update non genera un'eccezione in caso di errore, ma restituisce invece None (o qualcosa del genere) e tu vuoi per generare un'eccezione, puoi usare:

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

Nota che dovresti sempre specificare quale eccezione vuoi catturare e circondare solo le righe di codice in cui vuoi catturarla con try , in modo da non nascondere altri errori nel codice:

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

Vedi il try Dichiarazione , Eccezioni integrate e Errori ed eccezioni .