首页 > 解决方案 > 并非所有参数都在使用 dataframe.to_sql 的 SQL 语句中使用

问题描述

我无法使用 pandas dataframe.to_sql 诊断错误

我首先使用connection = mysql.connector.connect

然后我尝试使用将我的数据插入到mysql数据库中

df.to_sql('SData', con = connection, if_exists = 'append', chunksize = 1000)

我得到错误:

Execution failed on sql 'SELECT name FROM sqlite_master WHERE type='table' AND name=?;': Not all parameters were used in the SQL statement

SData 表和 df 具有相同的字段/名称,除了表有一个自动递增的主键,所以我唯一能想到的是,由于主键,并非所有字段都匹配......

我也不明白为什么 to_sql 中会有一个 select 语句,除非它正在检查字段名称或类似的东西?

数据字段是:

Database:
SID Primary key
SSID int(foreign key)
FirstValue decimal
SecondValue decimal

DF:
FirstValue 
SecondValue 
SSID

键入此内容时,我意识到数据框的顺序不同。不会认为这将是一个问题,但会调查这个

谢谢

标签: mysqlsqlpandasdataframe

解决方案


问题是我试图mysql.connector用作连接(引擎)并且必须将 sqlalchemy create_engine 与 mysql+pymysql 一起使用。

然后我不得不 to_sql 创建一个索引字段,所以必须设置 index=False,它工作。

这是新字符串:

import pymysql
engine = create_engine("mysql+pymysql://" + Cfg.username + ":" + Cfg.password + "@" + Cfg.host + "/" + Cfg.database)
df.to_sql('SData', con = engine, if_exists = 'append',index = False, chunksize = 1000)

谢谢


推荐阅读