详解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连接远程ftp服务器并列出目录下文件的方法
Apr 01 Python
Python处理XML格式数据的方法详解
Mar 21 Python
详解python之多进程和进程池(Processing库)
Jun 09 Python
Python实现购物系统(示例讲解)
Sep 13 Python
浅谈python中copy和deepcopy中的区别
Oct 23 Python
Python Json模块中dumps、loads、dump、load函数介绍
May 15 Python
Python pyinotify模块实现对文档的实时监控功能方法
Oct 13 Python
python3对拉勾数据进行可视化分析的方法详解
Apr 03 Python
详解用python计算阶乘的几种方法
Aug 14 Python
通过Python编写一个简单登录功能过程解析
Sep 04 Python
pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解
Jan 02 Python
Python 调用 ES、Solr、Phoenix的示例代码
Nov 23 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版淘宝网查询商品接口代码示例
2014/06/17 PHP
PHP往XML中添加节点的方法
2015/03/12 PHP
php自定义扩展名获取函数示例
2016/12/12 PHP
PHP实现数组向任意位置插入,删除,替换数据操作示例
2019/04/05 PHP
javascript学习笔记(七) js函数介绍
2012/06/19 Javascript
JavaScript 对任意元素,自定义右键菜单的实现方法
2013/05/08 Javascript
js禁止页面使用右键(简单示例代码)
2013/11/13 Javascript
JavaScript拆分字符串时产生空字符的解决方案
2014/09/26 Javascript
JavaScript实现的多种鼠标拖放效果
2015/11/03 Javascript
Javascript之Date对象详解
2016/06/07 Javascript
BootStrap中jQuery插件Carousel实现轮播广告效果
2017/03/27 jQuery
解决iView中时间控件选择的时间总是少一天的问题
2018/03/15 Javascript
对mac下nodejs 更新到最新版本的最新方法(推荐)
2018/05/17 NodeJs
vue.js过滤器+ajax实现事件监听及后台php数据交互实例
2018/05/22 Javascript
kafka调试中遇到Connection to node -1 could not be established. Broker may not be available.
2019/09/17 Javascript
详解小程序云开发攻略(解决最棘手的问题)
2019/09/30 Javascript
[03:17]2014DOTA2 国际邀请赛中国区预选赛 四强专访
2014/05/23 DOTA
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
2017/03/16 Python
浅谈python和C语言混编的几种方式(推荐)
2017/09/27 Python
Python实现上下班抢个顺风单脚本
2018/02/07 Python
Pytorch实现各种2d卷积示例
2019/12/30 Python
在pytorch 中计算精度、回归率、F1 score等指标的实例
2020/01/18 Python
Python中用pyinstaller打包时的图标问题及解决方法
2020/02/17 Python
Python根据URL地址下载文件并保存至对应目录的实现
2020/11/15 Python
python 多线程爬取壁纸网站的示例
2021/02/20 Python
详解css3 object-fit属性
2018/07/27 HTML / CSS
html5/css3响应式页面开发总结
2018/10/16 HTML / CSS
ebookers英国:隶属全球最大的在线旅游公司Expedia
2017/12/28 全球购物
J2EE面试题大全
2016/08/06 面试题
《雨霖铃》教学反思
2014/02/22 职场文书
企业指导教师评语
2014/04/28 职场文书
管理工程专业求职信
2014/08/10 职场文书
2014年小学重阳节活动策划方案
2014/09/16 职场文书
中学生社区服务活动报告
2015/02/05 职场文书
同步小康驻村工作简报
2015/07/20 职场文书
幼儿园大班教师评语
2019/06/21 职场文书