Ejemplo n.º 1
0
def db_ops(request): 
    if request.method == "GET":
        dataBaseList = DataBase_Server_Config.objects.all()
        serviceList = Service_Assets.objects.all()
        projectList = Project_Assets.objects.all()
        return render(request,'database/db_ops.html',{"user":request.user,"dataBaseList":dataBaseList,"serviceList":serviceList,"projectList":projectList}) 
    
    elif request.method == "POST" and request.POST.get('model') == 'binlog':#通过获取数据库的binlog版本
        try:
            dbServer = DataBase_Server_Config.objects.get(id=request.POST.get('ops_db'))
        except:
            dbServer = None
        if dbServer:
            mysql = MySQLPool(host=dbServer.db_host,port=dbServer.db_port,user=dbServer.db_user,passwd=dbServer.db_passwd,dbName=dbServer.db_name)
            result = mysql.queryAll(sql='show binary logs;')
            binLogList = []
            if isinstance(result,tuple):
                for ds in result[1]:
                    binLogList.append(ds[0]) 
        return JsonResponse({'msg':"数据查询成功","code":200,'data':binLogList,'count':0})  

    elif request.method == "POST" and request.POST.get('model') == 'querydb':#根据业务类型查询数据库
        dataList = []
        dbSerlist = DataBase_Server_Config.objects.filter(db_env=request.POST.get('db_env'),db_service=request.POST.get('db_service'))
        for ds in dbSerlist:
            data = dict()
            data['id'] = ds.id
            data['db_name'] = ds.db_name
            data['db_host'] = ds.db_host
            data['db_mark'] = ds.db_mark
            dataList.append(data)
        return JsonResponse({'msg':"数据查询成功","code":200,'data':dataList})
    
    elif request.method == "POST" and request.POST.get('opsTag') == '1':#通过binlog获取DML
        sqlList = []
        try:
            dbServer = DataBase_Server_Config.objects.get(id=int(request.POST.get('dbId')))
        except Exception, ex:
            sqlList.append(ex)
            dbServer = None
        if dbServer:
            conn_setting = {'host': dbServer.db_host, 'port': dbServer.db_port, 'user': dbServer.db_user, 'passwd': dbServer.db_passwd, 'charset': 'utf8'}
            #flashback=True获取DML回滚语句
            binlog2sql = Binlog2sql(connection_settings=conn_setting,             
                                    back_interval=1.0, only_schemas=dbServer.db_name,
                                    end_file='', end_pos=0, start_pos=4,
                                    flashback=True,only_tables='', 
                                    no_pk=False, only_dml=True,stop_never=False, 
                                    sql_type=['INSERT', 'UPDATE', 'DELETE'], 
                                    start_file=request.POST.get('binlog'), 
                                    start_time=request.POST.get('startime'), 
                                    stop_time=request.POST.get('endtime'),)
            sqlList = binlog2sql.process_binlog()
        return JsonResponse({'msg':"获取binlog数据成功","code":200,'data':sqlList,'tag':1}) 
Ejemplo n.º 2
0
def db_ops(request): 
    if request.method == "GET":
        dataBaseList = DataBase_Server_Config.objects.all()
        serviceList = Service_Assets.objects.all()
        projectList = Project_Assets.objects.all()
        return render(request,'database/db_ops.html',{"user":request.user,"dataBaseList":dataBaseList,"serviceList":serviceList,"projectList":projectList}) 
    
    elif request.method == "POST" and request.POST.get('model') == 'binlog':#通过获取数据库的binlog版本
        try:
            dbServer = DataBase_Server_Config.objects.get(id=request.POST.get('ops_db'))
        except:
            dbServer = None
        if dbServer:
            mysql = MySQLPool(host=dbServer.db_host,port=dbServer.db_port,user=dbServer.db_user,passwd=dbServer.db_passwd,dbName=dbServer.db_name)
            result = mysql.queryAll(sql='show binary logs;')
            binLogList = []
            if isinstance(result,tuple):
                for ds in result[1]:
                    binLogList.append(ds[0]) 
        return JsonResponse({'msg':"数据查询成功","code":200,'data':binLogList,'count':0})  

    elif request.method == "POST" and request.POST.get('model') == 'querydb':#根据业务类型查询数据库
        dataList = []
        dbSerlist = DataBase_Server_Config.objects.filter(db_env=request.POST.get('db_env'),db_service=request.POST.get('db_service'))
        for ds in dbSerlist:
            data = dict()
            data['id'] = ds.id
            data['db_name'] = ds.db_name
            data['db_host'] = ds.db_host
            data['db_mark'] = ds.db_mark
            dataList.append(data)
        return JsonResponse({'msg':"数据查询成功","code":200,'data':dataList})
    
    elif request.method == "POST" and request.POST.get('opsTag') == '1':#通过binlog获取DML
        sqlList = []
        try:
            dbServer = DataBase_Server_Config.objects.get(id=int(request.POST.get('dbId')))
        except Exception, ex:
            sqlList.append(ex)
            dbServer = None
        if dbServer:
            conn_setting = {'host': dbServer.db_host, 'port': dbServer.db_port, 'user': dbServer.db_user, 'passwd': dbServer.db_passwd, 'charset': 'utf8'}
            #flashback=True获取DML回滚语句
            binlog2sql = Binlog2sql(connection_settings=conn_setting,             
                                    back_interval=1.0, only_schemas=dbServer.db_name,
                                    end_file='', end_pos=0, start_pos=4,
                                    flashback=True,only_tables='', 
                                    no_pk=False, only_dml=True,stop_never=False, 
                                    sql_type=['INSERT', 'UPDATE', 'DELETE'], 
                                    start_file=request.POST.get('binlog'), 
                                    start_time=request.POST.get('startime'), 
                                    stop_time=request.POST.get('endtime'),)
            sqlList = binlog2sql.process_binlog()
        return JsonResponse({'msg':"获取binlog数据成功","code":200,'data':sqlList,'tag':1})