在mongodb進行數(shù)據(jù)庫操作的時候觸發(fā)異常pymongo Error: pymongo.errors.BulkWriteError: batch op errors occurred
- 今天在開發(fā)過程中遇到一個問題,將api的天級數(shù)據(jù)插入到mongodb中澄耍,出現(xiàn)了pymongo Error: pymongo.errors.BulkWriteError: batch op errors occurred這個異常甜孤。
解決過程
- 查找原因:此bug出現(xiàn)的原因是因為在insert_many過程中巫击,檢測到了重復的數(shù)據(jù),但每條數(shù)據(jù)都存在不同都id值制妄,百思不解
- bug復現(xiàn):補一天的數(shù)據(jù)不會出現(xiàn)這個問題迫横,但是補兩天的數(shù)據(jù)就會復現(xiàn)。
- 真正原因:在程序中定義了一個全局list贫橙,用來往數(shù)據(jù)庫批量插入數(shù)據(jù),所以補一天的數(shù)據(jù)無論如何都不會出現(xiàn)問題反粥。補多天的數(shù)據(jù)卢肃,需要遍歷天數(shù),但是全局的list并沒有清空才顿,以至于list中的數(shù)據(jù)會重復莫湘,插入數(shù)據(jù)庫過程中報錯。
- 解決辦法:定位到問題后郑气,在每次數(shù)據(jù)庫插入完成后逊脯,執(zhí)行清空list的代碼。
list.clear()