Pandas to_sql 到 localhost 表返回“引擎”对象没有属性“光标”

Posted

技术标签:

【中文标题】Pandas to_sql 到 localhost 表返回“引擎”对象没有属性“光标”【英文标题】:Pandas to_sql to localhost table returns 'Engine' object has no attribute 'cursor' 【发布时间】:2021-12-25 09:05:32 【问题描述】:

我看到很多这个问题是关于 sqlite 的,但我的问题是关于 mysql 的。

我的整个脚本是这样的:

df = pd.read_csv("df.csv")
engine = sqlalchemy.create_engine('mysql+mysqlconnector://0:1@2/3'.
                                               format(config.user, config.passwd, 
                                                      config.host, config.db))

df.to_sql('SQL_table', con=engine, if_exists='append', index=False)

然后它返回错误:

 'Engine' object has no attribute 'cursor'

我用谷歌搜索,并遵循了一些解决方案,其中之一是:

df = pd.read_csv("df.csv")
engine = sqlalchemy.create_engine('mysql+mysqlconnector://0:1@2/3'.
                                                   format(config.user, config.passwd, 
                                                          config.host, config.db))

connection = engine.raw_connection()    
df.to_sql('SQL_table', con=connection, if_exists='append', index=False)

然后错误变为:

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

我使用的是 MySQL,而不是 sqlite,我不明白为什么它会返回此错误。

所以基本上,我认为解决方案不起作用,谁能告诉我如何解决这个问题,我的 SQLalchemy 是 1.4.27

【问题讨论】:

【参考方案1】:

我已经解决了这个问题,我重置了我的 Mac,然后回到我的 VS Code,再次启动笔记本,问题就消失了。

但在那之前,我也尝试过使用命令

reset

这不能解决问题。它必须是机器硬重置。

【讨论】:

以上是关于Pandas to_sql 到 localhost 表返回“引擎”对象没有属性“光标”的主要内容,如果未能解决你的问题,请参考以下文章

Pandas 与 to_sql 的 ODBC 连接

Pandas to_sql 到 sqlite 返回“引擎”对象没有属性“光标”

在 pandas.to_sql() 中使用“可调用”方法的示例?

使用 Pandas .to_sql 将 JSON 列写入 Postgres

pandas.DataFrame.to_sql - 源 csv 文件和目标表的列顺序

pandas to_sql if_exist参数指南