今天在保存數據到Mongodb的時候出現E11000 duplicate key error collection:錯誤python
全部數據只有第一條能夠正確insertcode
E11000 duplicate key error collection:所提示的錯誤爲集合惟一主鍵重複了。generator
明明MongoDB的惟一主鍵是根據時間戳自動生成的,怎麼會重複了。io
在網上找了好久,也沒有找到解決方案。class
最終,排除法 ...import
出現主鍵重複的緣由:遍歷
數據重複。yield
自定義了惟一主鍵,並重復。im
第二條能夠排除了。那麼是否是第一條緣由呢?時間戳
從表面上來看的話,第一條也是能夠排除的。可是,MongoDB有本身的識別機制。雖然從表面上看數據不是重複的,可是它的ID是否是重複的呢?
爲進一步驗證了一下, 其結果就是....全部數據ID都是同樣的。爲何呢?
由於我使用的是for,並且遍歷了一個generator. 而這個generator是yield生成傳遞過來的,並且yield傳遞過來的數據是.....
好吧,很少說了,直接寫解決方案....下班時間過了一小時了...回家 = - =
其實,解決方案很是簡單...
from copy import deepcopy
而後在yield數據的時候,把數據deepcopy一下,完美解決.....
喔....好餓....
回家次飯.....