excel的数据自动同步到MySQL后的数据怎么覆盖之前同步的数据,python代码

##如下是知乎的代码
##链接 如何将excel数据导入数据库(mysql)且能自动更新? - 大毛毛的回答 - 知乎https://www.zhihu.com/question/60087141/answer/2300600361
##该代码用于excel自动同步到MySQL,已经可以成功实现,但是不能覆盖之前的已经同步过来的数据,所以想改一下代码实现覆盖数据的功能。

import pymysql
import pandas as pd
import os
import time
from datetime import datetime
 
file_name = []
dir_name = []
def get_file(file_dir):
    for parent, dirnames, filenames in os.walk(file_dir):
        # 第一个参数是文件夹路径,第二个参数是文件名,第三个参数是文件夹
        for filename in filenames:
            a = os.path.join(parent, filename)
            file_name.append(a)
 
        for dirname in dirnames:
            b = os.path.join(parent, dirname)
            dir_name.append(b)
            # 文件夹名
    return file_name
def pro(path):
    #获取excel文件对象
    date_xls = pd.ExcelFile(path)
    # print(date_xls)
    #for循环遍历所读excel中的sheet
    for sheetname in date_xls.sheet_names:
        #将sheet数据读取为dataframe
        df=pd.DataFrame(pd.read_excel(open(path,'rb'),sheet_name=sheetname))
        df=df.fillna(0)
        #将dataframe转为元组列表数据,execute函数导入mysql用
        pro1=df.apply(lambda x:tuple(x),axis=1).values.tolist()
        # print(pro1)
        #读取字段名,同时将列表格式转为字符串格式
        cl=df.columns.tolist()
        #计算字段个数
        b=df.columns.size
        #计算行数
        c=df.shape[0]
        #计算列数
        l=df.shape[1]
        #设置空字符串
        zhanweifu = ""
        clname =""
        #将字符串拼接,实现需要的SQL语句,此处需注意"`"是键盘ESC下方的按键
        for i in range(0, b - 1):
            zhanweifu = zhanweifu + "%s,"
            clname=clname+"`"+str(cl[i])+"`"+","
        zhanweifu = zhanweifu + "%s"
        clname=clname+"`"+str(cl[b-1])+"`"
        sheetname="`"+sheetname+"`"
        # 游标方法
        
        conn = pymysql.connect(host="localhost",user="root",password="123456",db="mysql",port=3306,charset='utf8')
 
        # 获取游标
        cs = conn.cursor()
        #注意点:excel中的sheet名必须与mysql中的表名一致,sheet字段名必须与mysql表名一致
        sql = "insert into " +sheetname + "(" + clname + ")" + " values" + "(" + zhanweifu + ")"
 
        # print(sql)
        try:
            #批量插入
            cs.executemany(sql,pro1)
            conn.commit()
        except UnicodeEncodeError:
            print('插入failed')
            conn.rollback()
        finally:
            conn.close()
 
            print('退出')
 
if __name__ == '__main__':
    # 调用函数
    #返回文件夹中所有excel文件名
    get_file(r'C:\Users\86185\Desktop\TJ_Morningmeeting\自动导入')
    Now_time=datetime.now()
    Now_date=Now_time.day
    while True:
        if Now_time.minute>1:
            #for循环将所有excel的所有sheet批量导入
            for i in file_name:
                pro(i)
            Now_date=Now_date+1
        time.sleep(60)
```python


```

要实现修改功能,必须有个字段的值是唯一的,导入之前判断唯一值是否存在,存在则更新,不存在则修改。