随笔都是学习笔记
随笔仅供参考,为避免笔记中可能出现的错误误导他人,请勿转载。
import datetime
import os
import pandas as pd
from sqlalchemy import create_engine


# 读取文件名称
def readFileName(filePath):
    print("正在读取文件名称。。。。")
    fileNameList = os.listdir(filePath)
    return fileNameList


# 通过获取的文件名称读取单个Excel文件内容
def readExcel(filePath, fileName):
    print("正在读取文件 " + fileName + " 。。。。")
    df = pd.read_excel(filePath + "\\" + fileName)
    if len(df.index) > 0:
        if filePath.__contains__("allstock"):
            df['股票代码'] = df['股票代码'][0].split(".")[0]    # 股票代码整理
            df = df.sort_values(by=['交易日期'])    # 日期升序
        elif filePath.__contains__("allindex"):
            df['代码'] = df['代码'][0].split(".")[0]
            df = df.sort_values(by=['日期'])
        return df
    else:
        return df


# 存入MySQL操作
def toSql(df, connect, tableName):
    print("正在将文件 " + tableName + " 存入MySQL。。。。")
    try:
        if len(df.index) > 0:
            # 将数据写入sql
            pd.io.sql.to_sql(df, tableName.split(".")[0], con=connect, if_exists='replace', index=False)
            return True
        elif len(df.index) == 0:
            print("文件 " + tableName + " 为空")
            return False
        else:
            return False
    except Exception:
        return False


# 将数据存入数据库
def getExcelDataToSQL(filePath, fileNameList, connect):
    print("从Excel到数据库。。。。")
    for i in fileNameList:
        if (not toSql(readExcel(filePath, i), connect, i)):  # i是带后缀的文件名称
            continue


def begin(path, connect):
    fileNameList = readFileName(path)  # 名称列表
    getExcelDataToSQL(path, fileNameList, connect)  # 将数据存入MySQL


if __name__ == '__main__':
    # create_engine('mysql+pymysql://用户名:密码@主机/库名?charset=utf8')
    path1 = "D:\\StudyFiles\\ClassFile\\股票证券实验报告\\证券日交易行情和文本基本信息\\ExcelFiles\\allindex"
    connect1 = create_engine('mysql+pymysql://root:747699@localhost/allindex?charset=utf8')
    path2 = "D:\\StudyFiles\\ClassFile\\股票证券实验报告\\证券日交易行情和文本基本信息\\ExcelFiles\\allstock"
    connect2 = create_engine('mysql+pymysql://root:747699@localhost/allstock?charset=utf8')
    print("******************** 程序开始 ******************** ")
    start = datetime.datetime.now()
    begin(path1, connect1)
    begin(path2, connect2)
    end = datetime.datetime.now()
    t = end - start
    print("******************** 程序结束 ******************** ")
    print(str(int(t.seconds / 60)) + " 分 - " + str(t.seconds % 60) + "")

 

 

posted on 2022-05-01 15:13  时间完全不够用啊  阅读(230)  评论(0编辑  收藏  举报