pandas添加sql表,检查表是否存在

2024-10-01 11:40:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一段代码,在一个目录中循环excel文件,将文件添加到sqlite数据库中。 我设法克服了表存在时引发的异常,但我发现这不优雅且效率低下,因为循环读取excel文件,将其添加到数据帧中,等等。。。 理想情况下,我希望在从excel创建df之前测试表的存在性。在

response = {}
for f in glob('T:\GESTION\toto\titi\tata\file_201*.xlsx'):
    print f
    datereg = re.search('T:\\\\GESTION\\\\toto\\\\titi\\\\tata\\\\file_(\d{4})(\d{2})(\d{2}).xlsx', f)
    if datereg is not None:
        dated = datetime.datetime(int(datereg.group(1)), int(datereg.group(2)), int(datereg.group(3)))
    print dated

    # ideally test if table in db exists here

    xl = pd.ExcelFile(f)
    df = xl.parse(sheetname="Sheet1")
    df = df[extractFields].drop_duplicates(subset='ISIN')
    df = df.set_index('ISIN', verify_integrity=True)
    response[dated] = df
    # print response
    engine = sqlalchemy.create_engine('sqlite:///my_db.sqlite')
    try:
        df.to_sql(dated.__str__(), engine, if_exists='fail')
    except ValueError as err:
        print(err)
        pass

Tags: 文件indfsqliteifresponsegroupexcel
1条回答
网友
1楼 · 发布于 2024-10-01 11:40:36

这就是我的代码:

engine = create_engine("mysql+mysqlconnector://{user}:{pw}@localhost/{db}".format(user="root",pw="password",db="worker"))
check=engine.has_table(table_name)
            print(check) #boolean
            if check == False:
                df.to_sql(con=engine, name=table_name, if_exists='replace',index=False)

相关问题 更多 >