-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #701 from jan-song/master
支持Oracle数据修改备份SQL功能,支持explain,with查询语法,对Oracle表结构和schema显示进行排序,支持sql tuning advisor,Oracle支持执行计划查看,支持Oracle update/insert/delete/create table/create index的语法SQL审核
- Loading branch information
Showing
7 changed files
with
2,514 additions
and
1,811 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,141 +1,141 @@ | ||
# -*- coding: UTF-8 -*- | ||
"""engine 结果集定义""" | ||
import json | ||
|
||
|
||
class SqlItem: | ||
|
||
def __init__(self, id=0, statement='', stmt_type='SQL', object_owner='', object_type='', object_name=''): | ||
''' | ||
:param id: SQL序号,从0开始 | ||
:param statement: SQL Statement | ||
:param stmt_type: SQL类型(SQL, PLSQL), 默认为SQL | ||
:param object_owner: PLSQL Object Owner | ||
:param object_type: PLSQL Object Type | ||
:param object_name: PLSQL Object Name | ||
''' | ||
self.id = id | ||
self.statement = statement | ||
self.stmt_type = stmt_type | ||
self.object_owner = object_owner | ||
self.object_type = object_type | ||
self.object_name = object_name | ||
|
||
|
||
class ReviewResult: | ||
"""审核的单条结果""" | ||
|
||
def __init__(self, inception_result=None, **kwargs): | ||
""" | ||
inception的结果列 = ['ID', 'stage', 'errlevel', 'stagestatus', 'errormessage', 'SQL', 'Affected_rows', | ||
'sequence','backup_dbname', 'execute_time', 'sqlsha1'] | ||
go_inception的结果列 = ['order_id', 'stage', 'error_level', 'stage_status', 'error_message', 'sql', | ||
'affected_rows', 'sequence', 'backup_dbname', 'execute_time', 'sqlsha1', 'backup_time'] | ||
""" | ||
if inception_result: | ||
self.id = inception_result[0] or 0 | ||
self.stage = inception_result[1] or '' | ||
self.errlevel = inception_result[2] or 0 | ||
self.stagestatus = inception_result[3] or '' | ||
self.errormessage = inception_result[4] or '' | ||
self.sql = inception_result[5] or '' | ||
self.affected_rows = inception_result[6] or 0 | ||
self.sequence = inception_result[7] or '' | ||
self.backup_dbname = inception_result[8] or '' | ||
self.execute_time = inception_result[9] or '' | ||
self.sqlsha1 = inception_result[10] or '' | ||
self.backup_time = inception_result[11] if len(inception_result) >= 12 else '' | ||
self.actual_affected_rows = '' | ||
else: | ||
self.id = kwargs.get('id', 0) | ||
self.stage = kwargs.get('stage', '') | ||
self.errlevel = kwargs.get('errlevel', 0) | ||
self.stagestatus = kwargs.get('stagestatus', '') | ||
self.errormessage = kwargs.get('errormessage', '') | ||
self.sql = kwargs.get('sql', '') | ||
self.affected_rows = kwargs.get('affected_rows', 0) | ||
self.sequence = kwargs.get('sequence', '') | ||
self.backup_dbname = kwargs.get('backup_dbname', '') | ||
self.execute_time = kwargs.get('execute_time', '') | ||
self.sqlsha1 = kwargs.get('sqlsha1', '') | ||
self.backup_time = kwargs.get('backup_time', '') | ||
self.actual_affected_rows = kwargs.get('actual_affected_rows', '') | ||
|
||
# 自定义属性 | ||
for key, value in kwargs.items(): | ||
if not hasattr(self, key): | ||
setattr(self, key, value) | ||
|
||
|
||
class ReviewSet: | ||
"""review和执行后的结果集, rows中是review result, 有设定好的字段""" | ||
|
||
def __init__(self, full_sql='', rows=None, status=None, | ||
affected_rows=0, column_list=None, **kwargs): | ||
self.full_sql = full_sql | ||
self.is_execute = False | ||
self.checked = None | ||
self.warning = None | ||
self.error = None | ||
self.warning_count = 0 # 检测结果警告数 | ||
self.error_count = 0 # 检测结果错误数 | ||
self.is_critical = False | ||
self.syntax_type = 0 # 语法类型 | ||
# rows 为普通列表 | ||
self.rows = rows or [] | ||
self.column_list = column_list | ||
self.status = status | ||
self.affected_rows = affected_rows | ||
|
||
def json(self): | ||
tmp_list = [] | ||
for r in self.rows: | ||
if isinstance(r, dict): | ||
tmp_list += [r] | ||
else: | ||
tmp_list += [r.__dict__] | ||
|
||
return json.dumps(tmp_list) | ||
|
||
def to_dict(self): | ||
tmp_list = [] | ||
for r in self.rows: | ||
tmp_list += [r.__dict__] | ||
return tmp_list | ||
|
||
|
||
class ResultSet: | ||
"""查询的结果集, rows 内只有值, column_list 中的是key""" | ||
|
||
def __init__(self, full_sql='', rows=None, status=None, | ||
affected_rows=0, column_list=None, **kwargs): | ||
self.full_sql = full_sql | ||
self.is_execute = False | ||
self.checked = None | ||
self.is_masked = False | ||
self.query_time = '' | ||
self.mask_rule_hit = False | ||
self.mask_time = '' | ||
self.warning = None | ||
self.error = None | ||
self.is_critical = False | ||
# rows 为普通列表 | ||
self.rows = rows or [] | ||
self.column_list = column_list if column_list else [] | ||
self.status = status | ||
self.affected_rows = affected_rows | ||
|
||
def json(self): | ||
tmp_list = [] | ||
for r in self.rows: | ||
tmp_list += [dict(zip(self.column_list, r))] | ||
return json.dumps(tmp_list) | ||
|
||
def to_dict(self): | ||
tmp_list = [] | ||
for r in self.rows: | ||
tmp_list += [dict(zip(self.column_list, r))] | ||
return tmp_list | ||
|
||
def to_sep_dict(self): | ||
return {'column_list': self.column_list, 'rows': self.rows} | ||
# -*- coding: UTF-8 -*- | ||
"""engine 结果集定义""" | ||
import json | ||
|
||
|
||
class SqlItem: | ||
|
||
def __init__(self, id=0, statement='', stmt_type='SQL', object_owner='', object_type='', object_name=''): | ||
''' | ||
:param id: SQL序号,从0开始 | ||
:param statement: SQL Statement | ||
:param stmt_type: SQL类型(SQL, PLSQL), 默认为SQL | ||
:param object_owner: PLSQL Object Owner | ||
:param object_type: PLSQL Object Type | ||
:param object_name: PLSQL Object Name | ||
''' | ||
self.id = id | ||
self.statement = statement | ||
self.stmt_type = stmt_type | ||
self.object_owner = object_owner | ||
self.object_type = object_type | ||
self.object_name = object_name | ||
class ReviewResult: | ||
"""审核的单条结果""" | ||
|
||
def __init__(self, inception_result=None, **kwargs): | ||
""" | ||
inception的结果列 = ['ID', 'stage', 'errlevel', 'stagestatus', 'errormessage', 'SQL', 'Affected_rows', | ||
'sequence','backup_dbname', 'execute_time', 'sqlsha1'] | ||
go_inception的结果列 = ['order_id', 'stage', 'error_level', 'stage_status', 'error_message', 'sql', | ||
'affected_rows', 'sequence', 'backup_dbname', 'execute_time', 'sqlsha1', 'backup_time'] | ||
""" | ||
if inception_result: | ||
self.id = inception_result[0] or 0 | ||
self.stage = inception_result[1] or '' | ||
self.errlevel = inception_result[2] or 0 | ||
self.stagestatus = inception_result[3] or '' | ||
self.errormessage = inception_result[4] or '' | ||
self.sql = inception_result[5] or '' | ||
self.affected_rows = inception_result[6] or 0 | ||
self.sequence = inception_result[7] or '' | ||
self.backup_dbname = inception_result[8] or '' | ||
self.execute_time = inception_result[9] or '' | ||
self.sqlsha1 = inception_result[10] or '' | ||
self.backup_time = inception_result[11] if len(inception_result) >= 12 else '' | ||
self.actual_affected_rows = '' | ||
else: | ||
self.id = kwargs.get('id', 0) | ||
self.stage = kwargs.get('stage', '') | ||
self.errlevel = kwargs.get('errlevel', 0) | ||
self.stagestatus = kwargs.get('stagestatus', '') | ||
self.errormessage = kwargs.get('errormessage', '') | ||
self.sql = kwargs.get('sql', '') | ||
self.affected_rows = kwargs.get('affected_rows', 0) | ||
self.sequence = kwargs.get('sequence', '') | ||
self.backup_dbname = kwargs.get('backup_dbname', '') | ||
self.execute_time = kwargs.get('execute_time', '') | ||
self.sqlsha1 = kwargs.get('sqlsha1', '') | ||
self.backup_time = kwargs.get('backup_time', '') | ||
self.actual_affected_rows = kwargs.get('actual_affected_rows', '') | ||
|
||
# 自定义属性 | ||
for key, value in kwargs.items(): | ||
if not hasattr(self, key): | ||
setattr(self, key, value) | ||
|
||
|
||
|
||
class ReviewSet: | ||
"""review和执行后的结果集, rows中是review result, 有设定好的字段""" | ||
|
||
def __init__(self, full_sql='', rows=None, status=None, | ||
affected_rows=0, column_list=None, **kwargs): | ||
self.full_sql = full_sql | ||
self.is_execute = False | ||
self.checked = None | ||
self.warning = None | ||
self.error = None | ||
self.warning_count = 0 # 检测结果警告数 | ||
self.error_count = 0 # 检测结果错误数 | ||
self.is_critical = False | ||
self.syntax_type = 0 # 语法类型 | ||
# rows 为普通列表 | ||
self.rows = rows or [] | ||
self.column_list = column_list | ||
self.status = status | ||
self.affected_rows = affected_rows | ||
|
||
def json(self): | ||
tmp_list = [] | ||
for r in self.rows: | ||
if isinstance(r, dict): | ||
tmp_list += [r] | ||
else: | ||
tmp_list += [r.__dict__] | ||
|
||
return json.dumps(tmp_list) | ||
|
||
def to_dict(self): | ||
tmp_list = [] | ||
for r in self.rows: | ||
tmp_list += [r.__dict__] | ||
return tmp_list | ||
|
||
|
||
class ResultSet: | ||
"""查询的结果集, rows 内只有值, column_list 中的是key""" | ||
|
||
def __init__(self, full_sql='', rows=None, status=None, | ||
affected_rows=0, column_list=None, **kwargs): | ||
self.full_sql = full_sql | ||
self.is_execute = False | ||
self.checked = None | ||
self.is_masked = False | ||
self.query_time = '' | ||
self.mask_rule_hit = False | ||
self.mask_time = '' | ||
self.warning = None | ||
self.error = None | ||
self.is_critical = False | ||
# rows 为普通列表 | ||
self.rows = rows or [] | ||
self.column_list = column_list if column_list else [] | ||
self.status = status | ||
self.affected_rows = affected_rows | ||
|
||
def json(self): | ||
tmp_list = [] | ||
for r in self.rows: | ||
tmp_list += [dict(zip(self.column_list, r))] | ||
return json.dumps(tmp_list) | ||
|
||
def to_dict(self): | ||
tmp_list = [] | ||
for r in self.rows: | ||
tmp_list += [dict(zip(self.column_list, r))] | ||
return tmp_list | ||
|
||
def to_sep_dict(self): | ||
return {'column_list': self.column_list, 'rows': self.rows} |
Oops, something went wrong.