爬虫结果数据完整性校验
數(shù)據(jù)完整性分為三個方面:
1、域完整性(列)
限制輸入數(shù)據(jù)的類型,及范圍,或者格式,如性別字段必須是“男”或者“女”,不允許其他數(shù)據(jù)插入,成績字段只能是0-100的整型數(shù)據(jù),email字段的內(nèi)容必須符合郵箱的正則表達式
2、實體完整性(行)
要求表中的所有行都有一個唯一標識符。這個唯一標識符可能是一列,也可能是幾列的組合,稱為主鍵。也就是說,表中的主鍵在所有行上必須取唯一值。
3、參照完整性(表)
參照完整性是基于外鍵與主鍵之間的關(guān)系,從表中的外鍵必須在主表中存在數(shù)據(jù),不能引用主表中不存在的主鍵值,在輸入更改或者刪除主表數(shù)據(jù)時,從表需要聯(lián)動變化,保證了數(shù)據(jù)的一致性。
?
根據(jù)以上概念,對于數(shù)據(jù)的完整性校驗是從?“列”、“行”、“表”?的維度進行的。
?
有些約束是在建表的時候就已經(jīng)根據(jù)數(shù)據(jù)庫定義語言DDL語句進行了約束。
1、域完整性約束
強制域完整性的方法有:限制類型(通過設(shè)定列的數(shù)據(jù)類型)、格式(通過CHECK約束和規(guī)則)或可能值的范圍(通過FOREIGN KEY約束、CHECK約束、DEFAULT定義、NOT NULL定義和規(guī)則)
2、實體完整性約束
強制實體完整性的方法有:索引、UNIQUE約束、PRIMARY KEY約束或IDENTITY屬性。
3、參照完整性約束
強制參照完整性的方法有:主外鍵關(guān)系
?
校驗點分析:
可以看到其實實體完整性是肯定符合的,因為沒有主鍵是不能建表的,參照完整性約束在建表時一般也會進行約束,校驗的重點在于域完整性校驗,即校驗列數(shù)據(jù)的內(nèi)容,有時候建表時不會增加CHECK約束(下面會舉例),
所以不能保證入庫的數(shù)據(jù)就是你想要的,假如沒有約束性別字段只能為”男”或者“女”,而你又需要統(tǒng)計男女比例分布,萬一爬蟲數(shù)據(jù)寫入了其他值,則統(tǒng)計結(jié)果肯定就不準確了。
例子:
CHECK約束(mysql)
在 "Persons" 表創(chuàng)建時在 "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) )?
域完整性校驗實例:
使用robot framework編寫的自動化測試腳本
*** Settings *** Library DatabaseLibrary Library re*** Test Cases *** 域完整性校驗[Documentation] 腳本解釋:...... 1、連接數(shù)據(jù)庫,讀取主鍵id和email字段的值...... 2、遍歷email的所有值,校驗是否符合郵箱格式的正則表達式,如果不符合用例失敗,打印錯誤信息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ù)為空\ ... 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ù)格式不正確,非郵箱格式。\ ... #校驗郵箱字段的值是否都符合郵箱格式?
?
腳本解釋:
1、連接數(shù)據(jù)庫,讀取主鍵id和email字段的值
2、遍歷email的所有值,校驗是否符合郵箱格式的正則表達式,如果不符合用例失敗,打印錯誤信息
轉(zhuǎn)載于:https://www.cnblogs.com/gcgc/p/11403723.html
總結(jié)
以上是生活随笔為你收集整理的爬虫结果数据完整性校验的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到很多蛇拦路预示着什么
- 下一篇: 梦到给别人家小孩穿衣服是什么意思