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

# -*- 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:[email protected]: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(五))