我有一个从 CSV 文件加载的数据框,其中包含标题行。分配从 read_csv 返回的数据帧后,我尝试使用 SQLAlchemy 引擎将行添加到 MySQL 数据库表中,我的方法调用如下所示:
my_dataframe.to_sql(name="my_table",
con=alch_engine,
if_exists="append",
chunksize=50,
index=False,
index_label=None)
但是,该表已经存在,并且数据帧标题的值与列名称不匹配,因此我收到 MySQL 错误(1054,“'field_list' 中的未知列 'Col1'”)
我不想使用第一行并在不指定列名的情况下运行插入查询。我还没有从 Pandas 手册中找到解决方案。
感谢您的帮助,
最佳答案
据我所知,您不能使用 .to_sql()
来做到这一点。但是您可以修改数据框以匹配表中的列名称。假设 db_cols 是一个包含名称的列表/数组/系列/可迭代对象,则应该这样做:
(my_dataframe
.rename(columns=dict(zip(df.columns, db_cols)))
.to_sql(name="my_table",
con=alch_engine,
if_exists="append",
chunksize=50,
index=False,
index_label=None))
关于mysql - 使用 to_sql 时如何防止使用第一行 Pandas DataFrame 作为列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35486721/