详解python校验SQL脚本命名规则


Posted in Python onMarch 22, 2019

需求背景

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

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

需求分析

首先要从脚本文件中提取出来表名称、列名称、函数名称、存储过程名称、索引名称、视图名称
这里需要使用python 相应的re和os模块
分别创建相应的规则,相应的名称依次分别进行校验,返回信息和具体提示

代码实现

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

-- 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);

第一步——提取表名称

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
  1. flags=re.I 匹配时忽略大小写,因为我们的表的创建语句CREATE TABLE或create table t_business_apply_reback
  2. \w 匹配字母数字下划线
  3. \S 匹配任意空字符
  4. [] 用来表示一组字符
  5. () 匹配括号内的表达式
  6. * 匹配0个或多个
  7. . 匹配任意字符除了换行符
  8. ? 匹配0个或多个,非贪婪模式

运行效果如下:

详解python校验SQL脚本命名规则

第二步——表名称匹配

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
  1. ^ 匹配字符串的开头
  2. $ 匹配字符串的结尾
  3. [a-z_] 匹配小写字母和下划线

 运行效果如下:

详解python校验SQL脚本命名规则

以上所述是小编给大家介绍的python校验SQL脚本命名规则详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Python程序语言快速上手教程
Jul 18 Python
详解Python中break语句的用法
May 14 Python
Python字符和字符值(ASCII或Unicode码值)转换方法
May 21 Python
Zabbix实现微信报警功能
Oct 09 Python
python获取命令行输入参数列表的实例代码
Jun 23 Python
Python脚本利用adb进行手机控制的方法
Jul 08 Python
python 两个数据库postgresql对比
Oct 21 Python
Django自定义全局403、404、500错误页面的示例代码
Mar 08 Python
python实现超级马里奥
Mar 18 Python
python实现单机五子棋
Aug 28 Python
python中常用的数据结构介绍
Jan 12 Python
Python下opencv使用hough变换检测直线与圆
Jun 18 Python
pymongo中group by的操作方法教程
Mar 22 #Python
Python常用特殊方法实例总结
Mar 22 #Python
pymongo中聚合查询的使用方法
Mar 22 #Python
OpenCV HSV颜色识别及HSV基本颜色分量范围
Mar 22 #Python
基于OpenCV python3实现证件照换背景的方法
Mar 22 #Python
详解Python给照片换底色(蓝底换红底)
Mar 22 #Python
详解python-图像处理(映射变换)
Mar 22 #Python
You might like
php读取文件内容的几种方法详解
2013/06/26 PHP
php建立Ftp连接的方法
2015/03/07 PHP
PHP智能识别收货地址信息实例
2019/01/05 PHP
判断控件是否已加载完成的代码
2010/02/24 Javascript
javascript实现面向对象类的功能书写技巧
2010/03/07 Javascript
JS 进度条效果实现代码整理
2011/05/21 Javascript
动态加载JS文件的三种方法
2013/11/08 Javascript
javascript数组去重的六种方法汇总
2015/08/16 Javascript
Javascript日期格式化format函数的使用方法
2016/08/30 Javascript
Angular中实现树形结构视图实例代码
2017/05/05 Javascript
认识jQuery的Promise的具体使用方法
2017/10/10 jQuery
ES6 Symbol数据类型的应用实例分析
2019/06/26 Javascript
ES6对象操作实例详解
2020/05/23 Javascript
python字典键值对的添加和遍历方法
2016/09/11 Python
独特的python循环语句
2016/11/20 Python
从CentOS安装完成到生成词云python的实例
2017/12/01 Python
全面了解Nginx, WSGI, Flask之间的关系
2018/01/09 Python
Python之dict(或对象)与json之间的互相转化实例
2018/06/05 Python
tensorflow实现加载mnist数据集
2018/09/08 Python
从DataFrame中提取出Series或DataFrame对象的方法
2018/11/10 Python
Python编程深度学习绘图库之matplotlib
2018/12/28 Python
python让函数不返回结果的方法
2020/06/22 Python
基于django2.2连oracle11g解决版本冲突的问题
2020/07/02 Python
Python爬虫之Selenium中frame/iframe表单嵌套页面
2020/12/04 Python
澳大利亚排名第一的狂热牛仔品牌:ONETEASPOON
2018/11/20 全球购物
SOA的常见陷阱或者误解是什么
2014/10/05 面试题
机修工岗位职责
2013/11/24 职场文书
统计岗位职责
2014/02/21 职场文书
英语一分钟演讲稿
2014/04/29 职场文书
2014县政府领导班子对照检查材料思想汇报
2014/09/25 职场文书
2015年财务部工作总结
2015/04/10 职场文书
装饰技术负责人岗位职责
2015/04/13 职场文书
革命电影观后感
2015/06/18 职场文书
2015年国庆节演讲稿范文
2015/07/30 职场文书
读《教育心理学》心得体会
2016/01/22 职场文书
原来闭幕词是这样写的呀!
2019/07/01 职场文书