爬虫结果数据完整性校验

数据完整性分为三个方面:

1、域完整性(列)

  限制输入数据的类型,及范围,或者格式,如性别字段必须是“男”或者“女”,不允许其他数据插入,成绩字段只能是0-100的整型数据,email字段的内容必须符合邮箱的正则表达式

2、实体完整性(行)

  要求表中的所有行都有一个唯一标识符。这个唯一标识符可能是一列,也可能是几列的组合,称为主键。也就是说,表中的主键在所有行上必须取唯一值。

3、参照完整性(表)

  参照完整性是基于外键与主键之间的关系,从表中的外键必须在主表中存在数据,不能引用主表中不存在的主键值,在输入更改或者删除主表数据时,从表需要联动变化,保证了数据的一致性。

 

根据以上概念,对于数据的完整性校验是从 “列”、“行”、“表” 的维度进行的。

 

有些约束是在建表的时候就已经根据数据库定义语言DDL语句进行了约束。

1、域完整性约束

  强制域完整性的方法有:限制类型(通过设定列的数据类型)、格式(通过CHECK约束和规则)或可能值的范围(通过FOREIGN KEY约束、CHECK约束、DEFAULT定义、NOT NULL定义和规则)

2、实体完整性约束

  强制实体完整性的方法有:索引、UNIQUE约束、PRIMARY KEY约束或IDENTITY属性。

3、参照完整性约束

  强制参照完整性的方法有:主外键关系

 

校验点分析:

  可以看到其实实体完整性是肯定符合的,因为没有主键是不能建表的,参照完整性约束在建表时一般也会进行约束,校验的重点在于域完整性校验,即校验列数据的内容,有时候建表时不会增加CHECK约束(下面会举例),

所以不能保证入库的数据就是你想要的,假如没有约束性别字段只能为”男”或者“女”,而你又需要统计男女比例分布,万一爬虫数据写入了其他值,则统计结果肯定就不准确了。

例子:

CHECK约束(mysql)

在 "Persons" 表创建时在 "P_Id" 列上创建 CHECK 约束。CHECK 约束规定 "P_Id" 列必须只包含大于 0 的整数。

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、连接数据库,读取主键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    数据为空\    ...    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]}的行数据${column}字段的值:${li[1]}数据格式不正确,非邮箱格式。\    ...    #校验邮箱字段的值是否都符合邮箱格式

 

 

脚本解释:

  1、连接数据库,读取主键id和email字段的值

  2、遍历email的所有值,校验是否符合邮箱格式的正则表达式,如果不符合用例失败,打印错误信息

转载于:https://www.cnblogs.com/gcgc/p/11403723.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/391564.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

go map数据结构

map数据结构 key-value的数据结构,又叫字典或关联数组 声明:var map1 map[keytype]valuetype var a map[string]string var a map[string]int var a map[int]string var a map[string]map[string]string备注:声明是不会分配内存的&#xff0c…

吴恩达神经网络1-2-2_图神经网络进行药物发现-第2部分

吴恩达神经网络1-2-2预测毒性 (Predicting Toxicity) 相关资料 (Related Material) Jupyter Notebook for the article Jupyter Notebook的文章 Drug Discovery with Graph Neural Networks — part 1 图神经网络进行药物发现-第1部分 Introduction to Cheminformatics 化学信息…

Android热修复之 - 阿里开源的热补丁

1.1 基本介绍     我们先去github上面了解它https://github.com/alibaba/AndFix 这里就有一个概念那就AndFix.apatch补丁用来修复方法,接下来我们看看到底是怎么实现的。1.2 生成apatch包      假如我们收到了用户上传的崩溃信息,我们改完需要修复…

seaborn分类数据可视:散点图|箱型图|小提琴图|lv图|柱状图|折线图

一、散点图stripplot( ) 与swarmplot() 1.分类散点图stripplot( ) 用法stripplot(xNone, yNone, hueNone, dataNone, orderNone, hue_orderNone,jitterTrue, dodgeFalse, orientNone, colorNone, paletteNone,size5, edgecolor"gray", linewi…

数据图表可视化_数据可视化十大最有用的图表

数据图表可视化分析师每天使用的最佳数据可视化图表列表。 (List of best data visualization charts that Analysts use on a daily basis.) Presenting information or data in a visual format is one of the most effective ways. Researchers have proved that the human …

javascript实现自动添加文本框功能

转自:http://www.cnblogs.com/damonlan/archive/2011/08/03/2126046.html 昨天,我们公司的网络小组决定为公司做一个内部的网站,主要是为员工比如发布公告啊、填写相应信息、投诉、问题等等需求。我那同事给了我以下需求: 1.点击一…

从Mysql slave system lock延迟说开去

本文主要分析 sql thread中system lock出现的原因,但是笔者并明没有系统的学习过master-slave的代码,这也是2018年的一个目标,2018年我都排满了,悲剧。所以如果有错误请指出,也作为一个笔记用于后期学习。同时也给出笔…

接facebook广告_Facebook广告分析

接facebook广告Is our company’s Facebook advertising even worth the effort?我们公司的Facebook广告是否值得努力? 题: (QUESTION:) A company would like to know if their advertising is effective. Before you start, yes…. Facebook does ha…

seaborn线性关系数据可视化:时间线图|热图|结构化图表可视化

一、线性关系数据可视化lmplot( ) 表示对所统计的数据做散点图,并拟合一个一元线性回归关系。 lmplot(x, y, data, hueNone, colNone, rowNone, paletteNone,col_wrapNone, height5, aspect1,markers"o", sharexTrue,shareyTrue, hue_orderNone, col_orde…

eda可视化_5用于探索性数据分析(EDA)的高级可视化

eda可视化Early morning, a lady comes to meet Sherlock Holmes and Watson. Even before the lady opens her mouth and starts telling the reason for her visit, Sherlock can tell a lot about a person by his sheer power of observation and deduction. Similarly, we…

Hyperledger Fabric 1.0 从零开始(十二)——fabric-sdk-java应用

Hyperledger Fabric 1.0 从零开始(十)——智能合约(参阅:Hyperledger Fabric Chaincode for Operators——实操智能合约) Hyperledger Fabric 1.0 从零开始(十一)——CouchDB(参阅&a…

css跑道_如何不超出跑道:计划种子的简单方法

css跑道There’s lots of startup advice floating around. I’m going to give you a very practical one that’s often missed — how to plan your early growth. The seed round is usually devoted to finding your product-market fit, meaning you start with no or li…

熊猫数据集_为数据科学拆箱熊猫

熊猫数据集If you are already familiar with NumPy, Pandas is just a package build on top of it. Pandas provide more flexibility than NumPy to work with data. While in NumPy we can only store values of single data type(dtype) Pandas has the flexibility to st…

JAVA基础——时间Date类型转换

在java中有六大时间类,分别是: 1、java.util包下的Date类, 2、java.sql包下的Date类, 3、java.text包下的DateFormat类,(抽象类) 4、java.text包下的SimpleDateFormat类, 5、java.ut…

LeetCode第五天

leetcode 第五天 2018年1月6日 22.(566) Reshape the Matrix JAVA class Solution {public int[][] matrixReshape(int[][] nums, int r, int c) {int[][] newNums new int[r][c];int size nums.length*nums[0].length;if(r*c ! size)return nums;for(int i0;i<size;i){ne…

matplotlib可视化_使用Matplotlib改善可视化设计的5个魔术技巧

matplotlib可视化It is impossible to know everything, no matter how much our experience has increased over the years, there are many things that remain hidden from us. This is normal, and maybe an exciting motivation to search and learn more. And I am sure …

robot:循环遍历数据库查询结果是否满足要求

使用list类型变量{}接收查询结果&#xff0c;再for循环遍历每行数据&#xff0c;取出需要比较的数值 转载于:https://www.cnblogs.com/gcgc/p/11424114.html

rm命令

命令 ‘rm’ &#xff08;remove&#xff09;&#xff1a;删除一个目录中的一个或多个文件或目录&#xff0c;也可以将某个目录及其下属的所有文件及其子目录均删除掉 语法&#xff1a;rm&#xff08;选项&#xff09;&#xff08;参数&#xff09; 默认会提示‘是否’删除&am…

感知器 机器学习_机器学习感知器实现

感知器 机器学习In this post, we are going to have a look at a program written in Python3 using numpy. We will discuss the basics of what a perceptron is, what is the delta rule and how to use it to converge the learning of the perceptron.在本文中&#xff0…

Python之集合、解析式,生成器,函数

一 集合 1 集合定义&#xff1a; 1 如果花括号为空&#xff0c;则是字典类型2 定义一个空集合&#xff0c;使用set 加小括号使用B方式定义集合时&#xff0c;集合内部的数必须是可迭代对象&#xff0c;数值类型的不可以 其中的值必须是可迭代对象&#xff0c;其中的元素必须是可…