【问题标题】:Import excel files in SQlite with pandas使用 pandas 在 SQlite 中导入 excel 文件
【发布时间】:2021-12-01 20:30:39
【问题描述】:

enter image description here我正在尝试使用python脚本和pandas导入SQlite数据库,几个excel文件,代码如下:

import pandas as pd
import os

path = os.getcwd()
files = os.listdir(path)

for filename in os.listdir(path):
    if filename.endswith('.xls'):
        df = pd.read_excel(filename)
        df.columns = ['Data',
                      'Hour',
                      'Series 1',
                      'Series 2',
                      'Series 3',
                      'Series 4']
        conn = sqlite3.connect('data.db')
        c = conn.cursor()
        df.to_sql('table1', conn, if_exists='replace')
        print(df)

但是,每次运行脚本时它要么替换值要么创建重复值,知道如何在 SQLite 中保留唯一值吗?

INPUT OUTPUT

【问题讨论】:

  • 您当前正在告诉 python 将数据帧加载到“table1”中,如果存在,则应将“table1”替换为当前文件。您要追加到表格中,还是为每个 excel 文件创建一个新文件?
  • 我需要追加,但即使更改为 if_exists='append',它也无济于事,因为每次我在 python 中运行代码时,值都写入数据库 table1 中。我想我需要相同的唯一性密钥?
  • 您能否提供一些数据示例?使用此方法时,它的外观、您希望它的外观以及最终的外观。
  • 我已经更新了输入视图的问题。我有几个这样的excel,都是通过脚本导入的。但是我现在正在运行的问题是,每次我运行脚本时它都会导入它们,从而创建重复项。
  • 你能告诉我重复的输出是什么样的吗?

标签: python pandas dataframe sqlite


【解决方案1】:

您可以通过添加带有日期的列来执行此操作,如下所示:

from datetime import datetime
today = datetime.today()

df["Date"] = today
# Make sure you have if_exists="append"

或者您可以在同一个数据库中单独创建一个并动态命名它们的日期,如下所示:

from datetime import datetime
today = datetime.today()

df.to_sql('{}'.format(str(today)), conn)

使用 if_exists="replace" 重新加载天数应该没问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-18
    • 2019-08-08
    • 2023-03-13
    • 2013-10-18
    • 1970-01-01
    • 2020-09-19
    • 1970-01-01
    • 2021-03-25
    相关资源
    最近更新 更多