原 荐 python校验SQL脚本命名规则

栏目: 数据库 · 发布时间: 6年前

原 荐  <a href='https://www.codercto.com/topics/20097.html'>python</a> 校验 <a href='https://www.codercto.com/topics/18630.html'>SQL</a> 脚本命名规则

python校验SQL脚本命名规则

  红焖鲤鱼 发布于 27分钟前

字数 664

阅读 8

收藏 0

hb Python def

开源中国十周年庆:开源众包怎么做我说了算!参与赢终身免费大奖 >>> 原 荐 python校验SQL脚本命名规则

需求背景

检查脚本文件中SQL语句是否按规范编写,规则如下:

  • 创建表时,表名称需以"t_"开头且均为小写
  • 增加和创建列时,列名称均为小写字母和_组成
  • 创建函数,函数名称需以"f_"开头
  • 创建存储过程,存储过程名称需以"p_"开头
  • 创建索引,索引名称需以"idx_"开头
  • 创建视图,视图名称需以"v_"开头

需求分析

  1. 首先要从脚本文件中提取出来表名称、列名称、函数名称、存储过程名称、索引名称、视图名称

    这里需要使用python 相应的re和os模块

  2. 分别创建相应的规则,相应的名称依次分别进行校验,返回信息和具体提示

代码实现

以校验表名称为例 文本内容如下;

-- mysql创建view、trigger、function、procedure、event时都会定义一个Definer
-- 更新中!!!!!!!!!!!!!
CREATE TABLE `t_auth_group_permissions`  (
create table t_business_apply_reback(
CREATE TABLE `t_exception_record` (
CREATE TABLE `t_lend_channel_insurance_company` (

alter table hb_product.admit_params add column originalid varchar(80);
alter table hb_product.admit_params_detail add column originalid varchar(80);
  1. 第一步——提取表名称
def get_result(rec, str):
    """
    :param rec: 匹配规则
    :param str: 匹配的对象
    :return: 查询的结果
    """
    result = re.findall(rec, str)
    return result

def get_table_names(str):
    """
    提取表名称返回数组
    :param str:
    :return:
    """
    table_name_rc1 = re.compile(r'CREATE TABLE [\S]*?(\w+)[\S].*\(', flags=re.I)
    result_table_name = get_result(table_name_rc1, str) + get_result(table_name_rc2, str)
    return result_table_name
  • flags=re.I 匹配时忽略大小写,因为我们的表的创建语句CREATE TABLE或create table t_business_apply_reback
  • \w 匹配字母数字下划线
  • \S 匹配任意空字符
  • [] 用来表示一组字符
  • () 匹配括号内的表达式
  • * 匹配0个或多个
  • . 匹配任意字符除了换行符
  • ? 匹配0个或多个,非贪婪模式

运行效果如下:

原 荐 python校验SQL脚本命名规则

  1. 第二步——表名称匹配
def is_match_t(strs):

    """
    表名称规则校验:t_开头小写字母和下划线
    :param strs:
    :return: 1通过,0不通过,msg返回信息
    """
    code, msg = 1, '验证通过'
    for i in strs:
        if re.match(r'^t_[a-z_]+$', i) is None:
            return 0, '创建表名称:' + i + '不符合命名规范,请仔细检查!'
    return code, msg
  • ^ 匹配字符串的开头
  • $ 匹配字符串的结尾
  • [a-z_] 匹配小写字母和下划线

运行效果如下:

原 荐 python校验SQL脚本命名规则

源码地址: https://gitee.com/hellotester/pythonLearn/tree/master/re_test

© 著作权归作者所有

共有人打赏支持

原 荐 python校验SQL脚本命名规则

红焖鲤鱼

粉丝 112

博文 40

码字总数 29584

作品 0

浦东

QA/测试工程师

相关文章 最新文章

【简明 Python 教程】学习笔记【Python简介及基本概念】

Python的特色:简单、易学、免费开源、高层语言、可移植性、解释性、面向对象、可扩展性、可嵌入性、丰富的库。 Ctrl-d退出提示符; Ctrl-z再按Enter。 复数。 标示符的命名: 标示符是用来标...

donhui

2014/11/27

0

0

`__pycache__` 是什么

为了提高模块加载的速度,每个模块都会在 文件夹中放置该模块的预编译模块,命名为 , 是模块的预编译版本编码,一般都包含 Python 的版本号。例如在 CPython 发行版 3.4 中, 文件的预编译文...

xinet

01/17

0

0

大神教你自动发现监控 mysql 从库状态

导读 zabbix从库如果复制有问题,在主库机器有问题的时候,切为主就会导致数据的丢失。或者主从分离的时候,如果从库出现延时状态的话,会导致前端页面展示的数据不是为最新的数据。因此,监...

问题终结者

05/08

0

0

【ZZ】Python下划线与命名规范

Python下划线与命名规范 以下分四种情况说明下划线的作用,python对成员域没有严格控制,大部份只是作为命名规范存在,以下英文部份摘自python官方网站 singleleadingunderscore: weak "int...

学徒1986

2013/09/03

0

0

python——作用域之LEGB规则

1 变量的作用域 Python是静态作用域,也就是说在Python中,变量的作用域源于它在代码中的位置;在不同的位置,可能有不同的命名空间。命名空间是变量作用域的体现形式。 2 LEGB各自代表的...

翠竹09

08/12

0

0

原 荐 python校验SQL脚本命名规则

没有更多内容

加载失败,请刷新页面

加载更多
why logging api better than system.out.println

The first and foremost advantage of any logging API over plain System.out.println resides in its ability to disable certain log statements while allowing others to print unhinde......

Yixin_Nemo

25分钟前

1

0

Qt5之使用流来读取xml

http://www.qter.org/portal.php?mod=view&aid=62 1、新建QT控制台应用,在.pro中添加 QT += core xml 2、xml文件: <?xml version="1.0" encoding="UTF-8"?><书库> <图书 编号="1">......

OceanStar

27分钟前

1

0

原 荐 python校验SQL脚本命名规则
微信小程序(6)模板详解 template

<template name="userTemp"> <view class="user"> <view>姓名:{{item.name}}</view> <view>性别:{{item.sex}}</view> <view>年龄:{{item.age}}</view> </view> </template> <template is="模......

lsjlgo

27分钟前

1

0

web应用防火墙的说明

Web应用防火墙是集web防护、网页保护、负载均衡、应用交付于一体的web整体安全防护设备的一款产品 。 Web应用防火墙产品部署在Web服务器的前面,串行接入,不仅在硬件性能上要求高,而且不能...

上树的熊

45分钟前

1

0

没有更多内容

加载失败,请刷新页面

加载更多

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

互联网产品运营:产品经理的10堂精英课

互联网产品运营:产品经理的10堂精英课

丁华、聂嵘海、王晶 / 电子工业出版社 / 2017-5 / 59

《互联网产品运营:产品经理的10堂精英课》共有10章,前9章分别从互联网产品运营的9个点入手,最后一章辅以案例,分析当下市场热门产品的运营模式。 第1章点明在运营产品之前需要经过缜密的策划,这样才能有明确的运营方向;第2章讲述产品运营的定位,有了准确的定位,运营才不会走偏;第3章描述用户运营,用户是一款产品的根本,没有用户,产品就是死的;第4章讲述内容运营的技巧,产品内容要怎么运营才能受到用......一起来看看 《互联网产品运营:产品经理的10堂精英课》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

html转js在线工具
html转js在线工具

html转js在线工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具