python – 关于safe的问题= mongodb更新操作的真参数

我使用pymongo python模块工作mongodb数据库.我的代码中有一个函数,当调用时更新集合中的记录,如下所示.

for record in coll.find(<some query here>):
   #Code here
   #...
   #...
   coll.update({ '_id' : record['_id'] },record)

现在,如果我修改代码如下:

for record in coll.find(<some query here>):
   try:
       #Code here
       #...
       #...
       coll.update({ '_id' : record['_id'] },record,safe=True)
   except:
        #Handle exception here

这是否意味着当更新失败或没有抛出异常时将抛出异常,更新只会跳过导致问题的记录?

请帮忙
谢谢

解决方法:

尝试,除非永远不会引发异常.他们只是处理抛出的异常.

如果update在失败时抛出异常,则except将处理异常,然后循环将继续(除非你在except子句中使用raise).

如果更新不会在失败时抛出异常,而是返回None(或类似的东西),并且您希望它抛出异常,您可以使用:

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

请注意,您应该始终指定要捕获的异常,并且只使用try包围要捕获它的代码行,这样您就不会在代码中隐藏其他错误:

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

try Statement,Built-in ExceptionsErrors and Exceptions.

上一篇:【MongoDB详细使用教程】四、python操作MongoDB


下一篇:2021-06-12