首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >并非所有参数都在使用dataframe.to_sql的SQL语句中使用。

问并非所有参数都在使用dataframe.to_sql的SQL语句中使用。
EN

Stack Overflow用户
提问于 2020-01-24 23:39:12
回答 1查看 3.8K关注 0票数 2

我在使用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语句,除非它是检查字段名或类似的东西。

数据字段包括:

代码语言:javascript
复制
Database:
SID Primary key
SSID int(foreign key)
FirstValue decimal
SecondValue decimal

DF:
FirstValue 
SecondValue 
SSID

在输入这段代码时,我意识到数据帧的顺序不同。我不认为这会是一个问题,但我会调查这一点

谢谢

EN

回答 1

Stack Overflow用户

发布于 2020-01-25 00:54:22

问题是我试图使用mysql.connector作为连接(引擎),不得不在mysql+pymysql中使用sqlalchemy create_engine。

然后,我让to_sql创建了一个索引字段,所以必须设置index=False,它起作用了。

下面是新的字符串:

代码语言:javascript
复制
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)

谢谢

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59899579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档