大作业 数据清洗(清洗结果的展示与导出)


点击结果查看并导出即可查看清洗后的结果,清洗后数据会先保存到数据库中,然后可以通过穿梭框将要导出的属性列导出为excel

文件导出利用是原先的原始表数据导出,与之前的原理一摸一样,保存到数据库也与最一开始的文件上传并导入到数据库原理一样

#清洗数据存入数据库
def data_clean_save(data_clean,table_name,database_name):
    flag=1
    conn,cursor=get_conn_mysql_name(database_name)
    sql="DROP TABLE if EXISTS "+table_name+" ; "
    cursor.execute(sql)
    #判断表是否存在,存在就删除
    sql = " CREATE TABLE " + table_name + " ("
    key_0=data_clean.keys()
    key=""
    for i in key_0:
        key=key+","+i
    key=key[1:]
    j = 0
    for i in key_0:
        sql = sql + i + " TEXT  comment 'null,null',"
        j = j + 1;
    creat_sql = sql[0:-1] + ") ENGINE = InnoDB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_bin;"
    print(creat_sql)
    # 获取%s
    s = ','.join(['%s' for _ in range(len(data_clean.columns))])
    # 获取values
    values = []
    for i in data_clean.values.tolist():
        values.append(i)
        # 组装insert语句
    insert_sql = 'insert into {}({}) values({})'.format(table_name, key, s)
    print(insert_sql)
    try:
        cursor.execute(creat_sql)
    except:
        traceback.print_exc()
        flag = 0
        print("表创建失败")
    # # 插入数据
    try:
        for i in values:
            cursor.execute(insert_sql, i)
            print(insert_sql)
            print(i)
        conn.commit()
    except:
        traceback.print_exc()
        flag = 0
        print("写入错误")
    close_conn_mysql(cursor, conn)
    return flag
    pass
#查看最终结果,将结果保存到数据库的bigwork_update_data
@app.route('/get_data_clean_result')
def get_data_clean_result():
table_name = request.values.get("table_name")
table_name=table_name+"_clean"
num_0 = data_clean.shape[0]
num_1 = data_clean.shape[1]
data = []
flag=0
#存入数据库
code=dataclean.data_clean_save(data_clean,table_name,"bigwork_update_data")
#将数据转换为json
for i in range(num_0):
json_list = {}
for j in range(num_1):
json_list[data_clean.keys()[j]] = data_clean.values[i][j]
data.append(json_list)
flag=flag+1
return jsonify({"code": 0, "msg": code, "count": flag, "data": data})

        <blockquote class="layui-elem-quote layui-text">
            <h2>数据清洗:{{ table_name }}h2>
            <h4 style="color: chocolate">已导入到数据库,表名:{{ table_name }}_cleanh4>
        blockquote>
        <div style="padding: 15px;">
            <table id="demo" lay-filter="test">table>
        div>
        <blockquote class="layui-elem-quote layui-text">
            <h2>文件导出h2>
        blockquote>
        <div id="export_select" class="demo-transfer">div>
        <br>
        <form class="layui-form" action="">
            <button type="button" class="layui-btn" id="export" >开始导出button>
        form>
        <br>
        <br>
        <br>