在设置主键的情况下
如果 insert_many(data)
data中有重复的主键
例如 'dynamic_id'为主键
a = [{
"dynamic_id": "0","from": "meituan","title": "你真的会洗头吗?洗头一定要注意这几点,尤其中老年人",},{
"dynamic_id" : "1","from" : "meituan","title" : "孕妇到底能不能吃冰淇淋?一起来看看吧!",{
"dynamic_id" : "2","title" : "他把\"洗碗布\"当成宝贝吃了,吓坏了所有的人!",}]
如果数据库中当前有"dynamic_id" : "1","dynamic_id" : "2",这两条数据
执行insert_many(a)后,会新增"dynamic_id": "0"这条数据
但是 如果a的顺序为:1,2,0 则a中的所有数据都不能存入数据库
所以
- 当使用insert_many时候 要遍历判断数据中是否每条存在于数据库中再做处理,对a进行遍历 使用insert_one逐条插入
for result_data_i in result_data:
if db.find_one({'dynamic_id':result_data_i['dynamic_id']}) == None:
db.insert_one(result_data_i)
else:
print('此条数据已经存在 不存入<a href="/tag/shujuku/" target="_blank" class="keywords">数据库</a>')</code></pre>