# -*- 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)
网友评论