详解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学习笔记之常用函数及说明
May 23 Python
Python操作CouchDB数据库简单示例
Mar 10 Python
Python黑魔法@property装饰器的使用技巧解析
Jun 16 Python
Django rest framework实现分页的示例
May 24 Python
Python网络爬虫之爬取微博热搜
Apr 18 Python
Python3匿名函数lambda介绍与使用示例
May 18 Python
记录Python脚本的运行日志的方法
Jun 05 Python
python画图——实现在图上标注上具体数值的方法
Jul 08 Python
Python定义一个函数的方法
Jun 15 Python
python中rc1什么意思
Jun 19 Python
一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系
Jul 03 Python
Python绘图之二维图与三维图详解
Aug 04 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
web server使用php生成web页面的三种方法总结
2013/10/28 PHP
微信公众平台开发关注及取消关注事件的方法
2014/12/23 PHP
PHP执行linux命令常用函数汇总
2016/02/02 PHP
无需数据库在线投票调查php代码
2016/07/20 PHP
javascript之大字符串的连接的StringBuffer 类
2007/05/08 Javascript
多浏览器支持的右下角浮动窗口
2010/04/01 Javascript
jquery实现按Enter键触发事件示例
2013/09/10 Javascript
jQuery中slideUp()方法用法分析
2014/12/24 Javascript
JS实现消息来时让网页标题闪动效果的方法
2016/04/20 Javascript
jQuery点击输入框显示验证码图片
2016/05/19 Javascript
Knockoutjs 学习系列(二)花式捆绑
2016/06/07 Javascript
Bootstrap CSS组件之导航条(navbar)
2016/12/17 Javascript
js实现简单的网页换肤效果
2017/01/18 Javascript
关于Sequelize连接查询时inlude中model和association的区别详解
2017/02/27 Javascript
JavaScript箭头(arrow)函数详解
2017/06/04 Javascript
JS实现发送短信验证后按钮倒计时功能(防止刷新倒计时失效)
2017/07/07 Javascript
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
2017/09/06 NodeJs
微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】
2017/12/05 Javascript
微信小程序上传图片实例
2018/05/28 Javascript
微信小程序如何获取手机验证码
2018/11/04 Javascript
js中数组对象去重的两种方法
2019/01/18 Javascript
JavaScript中的事件与异常捕获详析
2019/02/24 Javascript
python中几种自动微分库解析
2019/08/29 Python
Python读取表格类型文件代码实例
2020/02/17 Python
python安装dlib库报错问题及解决方法
2020/03/16 Python
基于Python爬取素材网站音频文件
2020/10/21 Python
python邮件中附加文字、html、图片、附件实现方法
2021/01/04 Python
社区班子对照检查材料
2014/08/27 职场文书
2014乡镇班子个人对照检查材料思想汇报
2014/09/26 职场文书
个人自我剖析材料
2014/09/30 职场文书
年度考核个人总结
2015/03/06 职场文书
2019年年中工作总结讲话稿模板
2019/03/25 职场文书
职场新人刚入职工作总结该怎么写?
2019/05/15 职场文书
解决Golang time.Parse和time.Format的时区问题
2021/04/29 Golang
梳理总结Python开发中需要摒弃的18个坏习惯
2022/01/22 Python
台式电脑蓝牙适配器怎么安装?台式电脑蓝牙适配器安装教程
2022/04/08 数码科技