如何避免mysql庫中存入數據時出現重複的問題

首先我們在創建表時,需要設置一個字段爲唯一索引,也就是說該字段不可重複,首先我們都知道數據庫中的id不可重複,但是如

果我們將id設置爲唯一索引的話,id不會重複,但是無法保證id = 6對應的整條數據 和id =66 的整條數據不重複,也就是說我們需要

設置表中的數據內容字段作爲唯一索引,我們需要確保該字段不會重複,比如說學生的學號,個人的身份證號碼,還有我們爬取的

網頁鏈接,一般不可重複。那麼我們就以爬取的網頁鏈接爲唯一索引來舉例說明:

首先我們建立如下所示數據庫及表

我們需要將link作爲唯一索引,設置如下(首先確保表中沒有重複的link數據,最好直接清空表來進行設置,否則會提示你無法建立唯一索引)

 

然後需要在python建立連接插入數據庫的sql語句的後面加上下面一段話:

on DUPLICATE KEY UPDATE (後面是對應的字段)title=values(title),p_time=values(p_time),content=values(content),cla=values(cla),ori=values(ori),c_time=values(c_time)

原句是: sql='insert into test(title,link,p_time,content,cla,ori,c_time)values (%s,%s,%s,%s,%s,%s,%s)

加入後的語句是: sql='insert into test(title,link,p_time,content,cla,ori,c_time)values (%s,%s,%s,%s,%s,%s,%s)on DUPLICATE KEY UPDATE title=values(title),p_time=values(p_time),content=values(content),cla=values(cla),ori=values(ori),c_time=values(c_time)'

 sql='insert into test(title,link,p_time,content,cla,ori,c_time)values (%s,%s,%s,%s,%s,%s,%s)on DUPLICATE KEY UPDATE title=values(title),p_time=values(p_time),content=values(content),cla=values(cla),ori=values(ori),c_time=values(c_time)'

以上準備工作做完後,就可以開始插入數據了,這種方法設置的保存方式將不會有同樣的網址出現,假如說一開始由一個網址存入倒數據之後,如果之後有一樣的網址數據再存進來,會直接覆蓋原有數據進行存儲。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章