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
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)
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
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)
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)
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)
def tables(self, request, *args, **kwargs): instance = self.get_object() tables = SqlQuery(instance).get_tables() self.ret['results'] = tables return Response(self.ret)
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)