Beispiel #1
0
 def execute(self, instance):
     affected_rows = 0
     opid_list = []
     instance.status = 0
     success_sql_num = 0
     sqlcontent = instance.sql_content
     sqlcontent = re.sub(r"/\*[^*]*\*+(?:[^*/][^*]*\*+)*/", "", sqlcontent)
     lines = [
         line for line in sqlcontent.splitlines()
         if not re.match("^\s*(--|#)", line)
     ]
     sqlcontent = " ".join([re.split("--|# ", line)[0] for line in lines])
     triggers_obj = SqlQuery(instance.db)
     tablename = triggers_obj.extract_table_name_from_sql(sqlcontent)
     triggerstmp = ''
     if tablename:
         triggerstmp = triggers_obj.get_triggers(tablename)
     success_sql_list, exception_sql_list, handle_result_execute = self.check_execute_sql(
         instance.db.id, sqlcontent, self.action_type_execute, triggerstmp)
     for success_sql in success_sql_list:
         affected_rows += success_sql[6]
         if re.findall(self.success_tag, success_sql[3]):
             success_sql_num += 1
             opid_list.append(success_sql[7].replace("'", ""))
     rollback_able = True if success_sql_num == len(
         success_sql_list) - 1 else False
     if exception_sql_list:
         instance.status = 2
         instance.execute_errors = exception_sql_list
     instance.rollback_db = success_sql[8]
     instance.rollback_opid = opid_list
     instance.rollback_able = rollback_able
     instance.handle_result_execute = handle_result_execute
     return instance, affected_rows
Beispiel #2
0
 def select(self, instance):
     sql_query = SqlQuery(instance.db)
     status, data = sql_query.get_select_result(instance.sql_content)
     instance.handle_result_execute = json.dumps([str(row) for row in data],
                                                 cls=DateEncoder)
     instance.status = status
     return instance, len(data)
Beispiel #3
0
 def select(self, instance):
     sql_query = SqlQuery(instance.db)
     data = sql_query.main(instance.sql_content)
     affected_rows = len(data)
     instance.handle_result_execute = json.dumps([str(row) for row in data],
                                                 cls=DateEncoder)
     instance.status = 0
     return instance, affected_rows
Beispiel #4
0
 def select(self, instance):
     sql_query = SqlQuery(instance.db)
     sqlcontent = instance.sql_content
     sqlcontent = re.sub(r"/\*[^*]*\*+(?:[^*/][^*]*\*+)*/", "", sqlcontent)
     lines = [line for line in sqlcontent.splitlines() if not re.match("^\s*(--|#)", line)]
     sqlcontent = " ".join([re.split("--|# ", line)[0] for line in lines])
     status, data = sql_query.get_select_result(sqlcontent)
     instance.handle_result_execute = json.dumps([str(row) for row in data], cls=DateEncoder)
     instance.status = status
     return instance, len(data)
Beispiel #5
0
 def sql_soar(self, request, *args, **kwargs):
     instance = self.get_object()
     sql = request.data.get('sql')
     soar_type = request.data.get('soar_type')
     res = SqlQuery(instance).sql_soar(sql, soar_type)
     self.ret['results'] = res
     return Response(self.ret)
 def execute(self, request, *args, **kwargs):
     ret = res.get_ret()
     instance = self.get_object()
     if instance.status != -1:
         ret = {'status': -2, 'msg': self.executed}
         return Response(ret)
     affected_rows = 0
     instance.status = 0
     if instance.type == self.type_select_tag:
         sql_query = SqlQuery(instance.db)
         data = sql_query.main(instance.sql_content)
         affected_rows = len(data)
         instance.handle_result_execute = json.dumps(
             [list(row) for row in data], cls=DateEncoder)
     else:
         execute_time = 0
         opids = []
         rollback_able = False
         success_sqls, exception_sqls, handle_result_execute = self.check_execute_sql(
             instance.db.id, instance.sql_content, self.action_type_execute)
         for success_sql in success_sqls:
             instance.rollback_db = success_sql[8]
             affected_rows += success_sql[6]
             execute_time += float(success_sql[9])
             if re.findall(self.success_tag, success_sql[3]):
                 rollback_able = True
                 opids.append(success_sql[7].replace("'", ""))
         if exception_sqls:
             instance.status = 2
             instance.execute_errors = exception_sqls
             ret['status'] = -1
         instance.rollback_opid = opids
         instance.rollback_able = rollback_able
         instance.handle_result_execute = handle_result_execute
         ret['data']['execute_time'] = '%.3f' % execute_time
     instance.exe_affected_rows = affected_rows
     ret['data']['affected_rows'] = affected_rows
     self.replace_remark(instance)
     self.handle_approve(2, 1, 2)
     self.mail(instance, self.action_type_execute)
     return Response(ret)
Beispiel #7
0
 def table_info(self, request, *args, **kwargs):
     instance = self.get_object()
     table_name = request.GET.get('table_name')
     table_info = SqlQuery(instance).get_table_info(table_name)
     self.ret['results'] = table_info
     return Response(self.ret)
Beispiel #8
0
 def tables(self, request, *args, **kwargs):
     instance = self.get_object()
     tables = SqlQuery(instance).get_tables()
     self.ret['results'] = tables
     return Response(self.ret)
Beispiel #9
0
 def sql_advisor(self, request, *args, **kwargs):
     instance = self.get_object()
     sql = request.data.get('sql')
     res = SqlQuery(instance).sql_advisor(sql)
     self.ret['results'] = res
     return Response(self.ret)