博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用sqlparse分析SQL语句,及自己写的SQL分析语句
阅读量:6845 次
发布时间:2019-06-26

本文共 4528 字,大约阅读时间需要 15 分钟。

备忘,

以后写的时候可以参考。

#!/usr/bin/env python# -*- coding: utf-8 -*-import sqlparseimport resql = """create table TEST_MODULE;create table TEST_MODULE(  MODULE_ID            NUMBER NOT NULL,  MODULE_NAME          VARCHAR2(64) NOT NULL,  USER_ID              VARCHAR2(32) NOT NULL, -----这是;注释---;u'哈哈'asd;fasfda  MODULE_TYPE          VARCHAR2(16) DEFAULT '1', --hello  PARENT_MODULE_ID     NUMBER DEFAULT 1,  SORT                 NUMBER(10) DEFAULT 1,  CREATED_BY           VARCHAR2(64),  CREATED_DATE         DATE DEFAULT SYSDATE,  UPDATED_BY           VARCHAR2(64),  UPDATED_DATE         DATE--reret);---adfdokfddrop table TEST_MODULE;drop table TEST_MODULE; --strsfsdffcreate table TEST_MODULE(  MODULE_ID            NUMBER NOT NULL,  MODULE_NAME          VARCHAR2(64) NOT NULL,  USER_ID              VARCHAR2(32) NOT NULL, -----这是;注释---;u'哈哈'asd;fasfda  MODULE_TYPE          VARCHAR2(16) DEFAULT '1', --hello  PARENT_MODULE_ID     NUMBER DEFAULT 1,  SORT                 NUMBER(10) DEFAULT 1,  CREATED_BY           VARCHAR2(64),  CREATED_DATE         DATE DEFAULT SYSDATE,  UPDATED_BY           VARCHAR2(64),  UPDATED_DATE         DATE--reret);create table TEST_MODULE;"""for item in sqlparse.split(sql):    print item, '@@@@@@@@@@@@'uncomment_list ="""create table TEST_MODULE;create table TEST_MODULE(  MODULE_ID            NUMBER NOT NULL,  MODULE_NAME          VARCHAR2(64) NOT NULL,  USER_ID              VARCHAR2(32) NOT NULL, -----这是;注释---;u'哈哈'asd;fasfda  MODULE_TYPE          VARCHAR2(16) DEFAULT '1', --hello  PARENT_MODULE_ID     NUMBER DEFAULT 1,  SORT                 NUMBER(10) DEFAULT 1,  CREATED_BY           VARCHAR2(64),  CREATED_DATE         DATE DEFAULT SYSDATE,  UPDATED_BY           VARCHAR2(64),  UPDATED_DATE         DATE--reret);---adfdokfddrop table TEST_MODULE;drop table TEST_MODULE; create table TEST_MODULE(  MODULE_ID            NUMBER NOT NULL,  MODULE_NAME          VARCHAR2(64) NOT NULL,  USER_ID              VARCHAR2(32) );NOT NULL, -----这是;注释---;u'哈哈'asd;fasfda  MODULE_TYPE          VARCHAR2(16) DEFAULT '1', --hello  PARENT_MODULE_ID     NUMBER DEFAULT 1,  SORT                 NUMBER(10) DEFAULT 1,  CREATED_BY           VARCHAR2(64),  CREATED_DATE         DATE DEFAULT SYSDATE,  UPDATED_BY           VARCHAR2(64),  UPDATED_DATE         DATE--reret);create table TEST_MODULE;"""def trans_sql(sql_strs):    sql_strs = sql_strs.replace("\r\n", "\n").replace("\r", "\n")    sql_list = sql_strs.split('\n')    sql_sts_list = []        for item in sql_list:        if len(item) == 0:            continue        if item.strip().startswith("--"):            continue        if re.search(r';\s*$', item) and not re.search(r'\)\s*;$', item):            sql_sts_list.append(item)        else:                        if len(sql_sts_list) == 0:                sql_sts_list.append(item + "\n")            elif sql_sts_list[len(sql_sts_list)-1].endswith(";"):                sql_sts_list.append(item + "\n")            else:                sql_sts_list[len(sql_sts_list)-1] += (item + "\n")    for index, item in enumerate(sql_sts_list):        if re.search(r';\s*$', item):            sql_sts_list[index] =  re.sub(r';\s*$',"", item)        if re.search(r'\)\s*;\n$', item):            sql_sts_list[index] =  re.sub(r'\)\s*;\n$',")", item)    return sql_sts_listsql_list = trans_sql(uncomment_list)for item in sql_list:    print item, '################'在 2017-01-12 17:27:47,"aguncn" 
写道:#!/usr/bin/env python# -*- coding: utf-8 -*-import multiprocessinguncomment_list ="""drop table TEST_MODULE;create table TEST_MODULE( MODULE_ID NUMBER NOT NULL, MODULE_NAME VARCHAR2(64) NOT NULL, USER_ID VARCHAR2(32) NOT NULL, -----这是;注释---;哈哈asd;fasfda MODULE_TYPE VARCHAR2(16) DEFAULT '1', --hello PARENT_MODULE_ID NUMBER DEFAULT 1, SORT NUMBER(10) DEFAULT 1, CREATED_BY VARCHAR2(64), CREATED_DATE DATE DEFAULT SYSDATE, UPDATED_BY VARCHAR2(64), UPDATED_DATE DATE--reret);drop table TEST_MODULE;"""temp_content_item1 = uncomment_list.replace("\r\n", "\n")temp_content_item2 = temp_content_item1.replace("\r", "\n")uncomment_list = temp_content_item2.split('\n')sql_sts_list = []for_int = 0for index, item in enumerate(uncomment_list): if len(item) == 0: continue if item.strip().endswith(";"): item = item[:-1] sql_sts_list.append(item) else: print len(sql_sts_list) sql_sts_list.append(item) print sql_sts_list # print sql_sts_list

 

转载地址:http://ayvul.baihongyu.com/

你可能感兴趣的文章
MySQL Query Cache 小结
查看>>
MusicXML 3.0 (6) - 符杠分组
查看>>
分享一个比lightbox配置更方便的jQuery web2.0图片显示插件:Topup
查看>>
Linux IPTables: Incoming and Outgoing Rule Examples (SSH and HTTP)
查看>>
C以二进制读、写、文本
查看>>
SYS_Oracle Erp打印机设定(案例)
查看>>
VBS基础篇 - 循环语句(3) - For...Next
查看>>
为你的程序换个皮肤(转载)
查看>>
SQL 学习笔记
查看>>
XML Publisher 并发程序由于"输出提交处理程序提交失败
查看>>
C#温故而知新学习系列之.NET框架高级特性—.NET框架中自身提供的属性(二)
查看>>
ora-12170:tns连接超时
查看>>
【转载】世界各地对BI的应用状况
查看>>
js获取url参数值
查看>>
动态他Transact-SQL语句处理中的常见问题演示.sql
查看>>
浅谈管理软件开发类项目是怎么来的,怎么接到项目的,欢迎大家补充(转载和标注)...
查看>>
快速了解必要的网络知识
查看>>
HTML5标签嵌套规则
查看>>
Linux下面如何安装Django
查看>>
MySQL 中now()时间戳用法
查看>>