使用 dataframe.to_sql 的 SQL 语句中并未使用所有参数

Jam*_*mes 7 mysql sql dataframe pandas

我在使用 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
Run Code Online (Sandbox Code Playgroud)

在输入此内容时,我意识到数据框的顺序不同。不认为这会成为问题,但会调查这一点

谢谢

Jam*_*mes 10

问题是我试图用作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)
Run Code Online (Sandbox Code Playgroud)

谢谢