我在使用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在输入这段代码时,我意识到数据帧的顺序不同。我不认为这会是一个问题,但我会调查这一点
谢谢
发布于 2020-01-25 00:54:22
问题是我试图使用mysql.connector作为连接(引擎),不得不在mysql+pymysql中使用sqlalchemy create_engine。
然后,我让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)谢谢
https://stackoverflow.com/questions/59899579
复制相似问题