欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解python校驗(yàn)SQL腳本命名規(guī)則

 更新時(shí)間:2019年03月22日 11:09:18   作者:紅燜鯉魚  
這篇文章主要介紹了python校驗(yàn)SQL腳本命名規(guī)則,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

需求背景

檢查腳本文件中SQL語句是否按規(guī)范編寫,規(guī)則如下:

  1. 創(chuàng)建表時(shí),表名稱需以"t_"開頭且均為小寫
  2. 增加和創(chuàng)建列時(shí),列名稱均為小寫字母和_組成
  3. 創(chuàng)建函數(shù),函數(shù)名稱需以"f_"開頭
  4. 創(chuàng)建存儲(chǔ)過程,存儲(chǔ)過程名稱需以"p_"開頭
  5. 創(chuàng)建索引,索引名稱需以"idx_"開頭
  6. 創(chuàng)建視圖,視圖名稱需以"v_"開頭

需求分析

首先要從腳本文件中提取出來表名稱、列名稱、函數(shù)名稱、存儲(chǔ)過程名稱、索引名稱、視圖名稱
這里需要使用python 相應(yīng)的re和os模塊
分別創(chuàng)建相應(yīng)的規(guī)則,相應(yīng)的名稱依次分別進(jìn)行校驗(yàn),返回信息和具體提示

代碼實(shí)現(xiàn)

以校驗(yàn)表名稱為例 文本內(nèi)容如下;

-- mysql創(chuàng)建view、trigger、function、procedure、event時(shí)都會(huì)定義一個(gè)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: 匹配規(guī)則
  :param str: 匹配的對(duì)象
  :return: 查詢的結(jié)果
  """
  result = re.findall(rec, str)
  return result

def get_table_names(str):
  """
  提取表名稱返回?cái)?shù)組
  :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 匹配時(shí)忽略大小寫,因?yàn)槲覀兊谋淼膭?chuàng)建語句CREATE TABLE或create table t_business_apply_reback
  2. \w 匹配字母數(shù)字下劃線
  3. \S 匹配任意空字符
  4. [] 用來表示一組字符
  5. () 匹配括號(hào)內(nèi)的表達(dá)式
  6. * 匹配0個(gè)或多個(gè)
  7. . 匹配任意字符除了換行符
  8. ? 匹配0個(gè)或多個(gè),非貪婪模式

運(yùn)行效果如下:

第二步——表名稱匹配

def is_match_t(strs):

  """
  表名稱規(guī)則校驗(yàn):t_開頭小寫字母和下劃線
  :param strs:
  :return: 1通過,0不通過,msg返回信息
  """
  code, msg = 1, '驗(yàn)證通過'
  for i in strs:
    if re.match(r'^t_[a-z_]+$', i) is None:
      return 0, '創(chuàng)建表名稱:' + i + '不符合命名規(guī)范,請(qǐng)仔細(xì)檢查!'
  return code, msg
  1. ^ 匹配字符串的開頭
  2. $ 匹配字符串的結(jié)尾
  3. [a-z_] 匹配小寫字母和下劃線

 運(yùn)行效果如下:

以上所述是小編給大家介紹的python校驗(yàn)SQL腳本命名規(guī)則詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 詳解Python中的分組函數(shù)groupby和itertools)

    詳解Python中的分組函數(shù)groupby和itertools)

    這篇文章主要介紹了Python中的分組函數(shù)groupby和itertools)的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2018-07-07
  • Python實(shí)現(xiàn)為圖像添加下雪特效

    Python實(shí)現(xiàn)為圖像添加下雪特效

    這篇文章主要為大家介紹了通過Python為圖像添加下雪特效,文中的示例代碼講解詳細(xì),對(duì)學(xué)習(xí)Python有一定的幫助,感興趣的小伙伴可以了解一下
    2021-12-12
  • Python Django請(qǐng)求和響應(yīng)對(duì)象詳解

    Python Django請(qǐng)求和響應(yīng)對(duì)象詳解

    這篇文章主要給大家介紹了關(guān)于django的請(qǐng)求和響應(yīng)對(duì)象,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用django具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-11-11
  • np.zeros()函數(shù)的使用方法

    np.zeros()函數(shù)的使用方法

    本文主要介紹了np.zeros()函數(shù)的使用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • linux安裝Python3.4.2的操作方法

    linux安裝Python3.4.2的操作方法

    這篇文章主要介紹了linux安裝Python3.4.2的操作方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-09-09
  • python接口自動(dòng)化框架實(shí)戰(zhàn)

    python接口自動(dòng)化框架實(shí)戰(zhàn)

    這篇文章主要介紹了python接口自動(dòng)化框架實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • matplotlib繪制折線圖的基本配置(萬能模板案例)

    matplotlib繪制折線圖的基本配置(萬能模板案例)

    折線圖可以很方便的看出數(shù)據(jù)的對(duì)比,本文主要介紹了matplotlib繪制折線圖的基本配置(萬能模板案例),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • python光學(xué)仿真通過菲涅耳公式實(shí)現(xiàn)波動(dòng)模型

    python光學(xué)仿真通過菲涅耳公式實(shí)現(xiàn)波動(dòng)模型

    這篇文章主要介紹了python光學(xué)仿真通過菲涅耳公式實(shí)現(xiàn)波動(dòng)模型的示例解析原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-10-10
  • python腳本設(shè)置系統(tǒng)時(shí)間的兩種方法

    python腳本設(shè)置系統(tǒng)時(shí)間的兩種方法

    這篇文章主要介紹了python腳本設(shè)置系統(tǒng)時(shí)間的兩種方法,其一是調(diào)用socket直接發(fā)送udp包到國家授時(shí)中心,其二是調(diào)用ntplib包,感興趣的小伙伴們可以參考一下
    2016-02-02
  • Django使用echarts進(jìn)行可視化展示的實(shí)踐

    Django使用echarts進(jìn)行可視化展示的實(shí)踐

    可視化是將數(shù)據(jù)轉(zhuǎn)換成圖形或圖像在屏幕上顯示出來,本文主要介紹了Django使用echarts進(jìn)行可視化展示的實(shí)踐,感興趣的可以了解一下
    2021-06-06

最新評(píng)論