我有一个从 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)
Run Code Online (Sandbox Code Playgroud)
但是,该表已经存在,并且数据帧标题的值与列名称不匹配,因此我收到 MySQL 错误(1054,“'field_list' 中的未知列 'Col1'”)
我不想根本不使用第一行并运行插入查询而不指定列名。我还没有从 Pandas 手册中找到解决方案。
感谢您的帮助,
AFAIK 你不能这样做.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))
Run Code Online (Sandbox Code Playgroud)