爬虫结果数据完整性校验
數(shù)據(jù)完整性分為三個(gè)方面:
1、域完整性(列)
限制輸入數(shù)據(jù)的類型,及范圍,或者格式,如性別字段必須是“男”或者“女”,不允許其他數(shù)據(jù)插入,成績(jī)字段只能是0-100的整型數(shù)據(jù),email字段的內(nèi)容必須符合郵箱的正則表達(dá)式
2、實(shí)體完整性(行)
要求表中的所有行都有一個(gè)唯一標(biāo)識(shí)符。這個(gè)唯一標(biāo)識(shí)符可能是一列,也可能是幾列的組合,稱為主鍵。也就是說,表中的主鍵在所有行上必須取唯一值。
3、參照完整性(表)
參照完整性是基于外鍵與主鍵之間的關(guān)系,從表中的外鍵必須在主表中存在數(shù)據(jù),不能引用主表中不存在的主鍵值,在輸入更改或者刪除主表數(shù)據(jù)時(shí),從表需要聯(lián)動(dòng)變化,保證了數(shù)據(jù)的一致性。
?
根據(jù)以上概念,對(duì)于數(shù)據(jù)的完整性校驗(yàn)是從?“列”、“行”、“表”?的維度進(jìn)行的。
?
有些約束是在建表的時(shí)候就已經(jīng)根據(jù)數(shù)據(jù)庫定義語言DDL語句進(jìn)行了約束。
1、域完整性約束
強(qiáng)制域完整性的方法有:限制類型(通過設(shè)定列的數(shù)據(jù)類型)、格式(通過CHECK約束和規(guī)則)或可能值的范圍(通過FOREIGN KEY約束、CHECK約束、DEFAULT定義、NOT NULL定義和規(guī)則)
2、實(shí)體完整性約束
強(qiáng)制實(shí)體完整性的方法有:索引、UNIQUE約束、PRIMARY KEY約束或IDENTITY屬性。
3、參照完整性約束
強(qiáng)制參照完整性的方法有:主外鍵關(guān)系
?
校驗(yàn)點(diǎn)分析:
可以看到其實(shí)實(shí)體完整性是肯定符合的,因?yàn)闆]有主鍵是不能建表的,參照完整性約束在建表時(shí)一般也會(huì)進(jìn)行約束,校驗(yàn)的重點(diǎn)在于域完整性校驗(yàn),即校驗(yàn)列數(shù)據(jù)的內(nèi)容,有時(shí)候建表時(shí)不會(huì)增加CHECK約束(下面會(huì)舉例),
所以不能保證入庫的數(shù)據(jù)就是你想要的,假如沒有約束性別字段只能為”男”或者“女”,而你又需要統(tǒng)計(jì)男女比例分布,萬一爬蟲數(shù)據(jù)寫入了其他值,則統(tǒng)計(jì)結(jié)果肯定就不準(zhǔn)確了。
例子:
CHECK約束(mysql)
在 "Persons" 表創(chuàng)建時(shí)在 "P_Id" 列上創(chuàng)建 CHECK 約束。CHECK 約束規(guī)定 "P_Id" 列必須只包含大于 0 的整數(shù)。
CREATE TABLE Persons ( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), CHECK (P_Id>0) )?
域完整性校驗(yàn)實(shí)例:
使用robot framework編寫的自動(dòng)化測(cè)試腳本
*** Settings *** Library DatabaseLibrary Library re*** Test Cases *** 域完整性校驗(yàn)[Documentation] 腳本解釋:...... 1、連接數(shù)據(jù)庫,讀取主鍵id和email字段的值...... 2、遍歷email的所有值,校驗(yàn)是否符合郵箱格式的正則表達(dá)式,如果不符合用例失敗,打印錯(cuò)誤信息Connect To Database Using Custom Params pymysql database='test_platform',user='root',password='guchen',host='192.168.202.80',port=3306${table} Set Variable account_user${primary_key} Set Variable id${column} Set Variable email@{result} Query select ${primary_key},${column} from ${table}Log Many @{result}: FOR ${li} IN @{result}\ log ${li[1]} #${li[1]}為獲取到的郵箱\ Run Keyword If '${li[1]}' == '' log 數(shù)據(jù)為空\(chéng) ... ELSE Should Match Regexp ${li[1]} ^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$ msg=${table}表中,${primary_key}為${li[0]}的行數(shù)據(jù)${column}字段的值:${li[1]}數(shù)據(jù)格式不正確,非郵箱格式。\ ... #校驗(yàn)郵箱字段的值是否都符合郵箱格式?
?
腳本解釋:
1、連接數(shù)據(jù)庫,讀取主鍵id和email字段的值
2、遍歷email的所有值,校驗(yàn)是否符合郵箱格式的正則表達(dá)式,如果不符合用例失敗,打印錯(cuò)誤信息
轉(zhuǎn)載于:https://www.cnblogs.com/gcgc/p/11403723.html
總結(jié)
以上是生活随笔為你收集整理的爬虫结果数据完整性校验的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到很多蛇拦路预示着什么
- 下一篇: seaborn分类数据可视:散点图|箱型