美文网首页Python
Python-读取EXCEL数据计算行数,并写入mysql(五)

Python-读取EXCEL数据计算行数,并写入mysql(五)

作者: 堂哥000 | 来源:发表于2021-12-31 15:26 被阅读0次
    # -*- coding: utf-8 -*-
    """
    Created on   2021/12/30 11:25
    SQL 数据类型
    from sqlalchemy import Integer
    from sqlalchemy import DATE
    from sqlalchemy import BIGINT
    
    """
    import pandas as pd
    from sqlalchemy import create_engine
    from sqlalchemy import VARCHAR
    ## from com.data import testFunction
    import time
    
    path = "D:/code_fileAll/test_file/input/老头乐.xlsx"
    res_path = "D:/code_fileAll/test_file/output/"
    curr_date = time.strftime("%Y%m%d", time.localtime())
    print(curr_date)
    # 设置mysql 连接引擎
    engine = create_engine("mysql+pymysql://root:root@10.1.60.110:3306/datax?charset=utf8mb4",
                           max_overflow=0,   # 超过连接池大小外最多创建的连接,为0表示超过5个连接后,其他连接请求会阻塞 (默认为10)
                           pool_size=5,      # 连接池大小(默认为5)
                           pool_timeout=30,  # 连接线程池中,没有连接时最多等待的时间,不设置无连接时直接报错 (默认为30)
                           pool_recycle=-1,  # 多久之后对线程池中的线程进行一次连接的回收(重置) (默认为-1)
                           encoding='utf-8',
                           echo=False  # 打印SQL语句
                           )
    
    # 读取EXCEL,设定列名
    df = pd.read_excel(path, names=['a', 'b', 'c', 'd'], header=None)
    
    # 取最后几行
    print(df[-3:])
    # 取前几行
    print(df.head(3))
    
    # 写入文件名
    res_path_name = f'{res_path}excelTocsv_curr_date.txt'
    
    def rowsRumer(data):
        # 统计文件行数
        allRows = len(data.index)
        # 分组计算按d列值分组,每个值数据量,不包含空值
        groupAllNoHeader = data['d'].value_counts()  # 无表头
        groupAllHeader = data.groupby("d").size()  # 有表头
        # 分组计算按d列值分组,每个值数据量,包含空值在内
        groupAllIsNAN = data.fillna("NaN").groupby("d").size()  # 分组统计非空值.reset_index()
        # 输出d列值的去重结果
        dupl_value = data['d'].drop_duplicates()
        # 二维元组,(行_cnt,列_cnt) 统计值, 不屏蔽空值
        ranks_cnt = data.shape  # (306, 4)
    
        print("文件行数为\n", allRows)
        print("分组计算为\n", groupAllIsNAN)
        print("第四列去重值为\n", dupl_value)
        print("(行,列) 统计值\n", ranks_cnt)
        # 计算结果写入本地文件
        # pd.DataFrame(allRows).to_csv(res_path_name)
    
    def toMysql (data):
        # 修改列名, 全修改
        data.columns = ['lable', 'lable2', 'lable3', 'lable4']
        # 修改列名定向修改
        # data.rename(columns={'a': 'lable'}, inplace=True)
    
         """
        if_exists 三种格式
        fail  # 新建表,存在报错
        replace # 删表重建
        append  # 源表追加
        """
        data.to_sql("datax_fdl_4", engine, if_exists='append', index=False
                    , dtype={"lable": VARCHAR(length=20)
                            , "lable2": VARCHAR(length=20)
                            , "lable3": VARCHAR(length=20)
                            , "lable4": VARCHAR(length=20)
                             }
                    )
    
    
    if __name__ == '__main__':
         rowsRumer(df)
         toMysql(df)
    

    相关文章

      网友评论

        本文标题:Python-读取EXCEL数据计算行数,并写入mysql(五)

        本文链接:https://www.haomeiwen.com/subject/tyggqrtx.html