繁体   English   中英

df.to_sql 引发 ValueError("指定空表或列名")

[英]df.to_sql raises ValueError("Empty table or column name specified")

list(df)检索df dataframe 的列标题。 headers_list检索现有438393848表的现有列标题。 我要做的是438393848 df中不存在的DROP表的列标题,然后使用to_sql方法将df dataframe 推送到438393848 SQLite 数据库中。 但是, df.to_sql引发 ValueError("Empty table or column name specified")。

with conn:
        c.execute(f"CREATE TABLE IF NOT EXISTS '438393848' ({list(df)[0]})")
        try:
            for header in list(df)[1:]:
                c.execute(f"ALTER TABLE '438393848' ADD COLUMN {header}")
        except:
               pass
        colnames = conn.execute("SELECT * FROM '438393848'").description
        headers_list = list(map(lambda x: x[0], colnames))
        for column in headers_list:
            if column not in list(df):
                c.execute(f"ALTER TABLE '438393848' DROP COLUMN {column}")
        colnamesnew = conn.execute("SELECT * FROM '438393848'").description
    df.to_sql('438393848', conn, if_exists='replace', index=False)

对于上下文,我在另一组代码中编辑了df dataframe ,这使得df与 SQLite 表438393848不同步。 我想要做的是使用这组代码来更新我的表438393848的列,以便在列匹配后可以将df推送到 SQLite 表。 运行代码一次后,通过打印表格438393848 ,该列被DROP编辑并符合 dataframe df的列标题。

有谁知道问题是什么?

重新阅读 df.to_sql 文档后, if_exists=replace参数会删除该表并用一个全新的数据集替换该表,在本例中为df 因此,上述代码无需替换列 header 名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM