写入 MySQL 时查询 sqlite_master 表时出现 to_sql() 错误

Posted

技术标签:

【中文标题】写入 MySQL 时查询 sqlite_master 表时出现 to_sql() 错误【英文标题】:to_sql() error querying sqlite_master table when writing to MySQL 【发布时间】:2017-08-25 10:57:05 【问题描述】:

我有一个关于如何将数据框保存到本地 mysql 的问题。

import MySQLdb
import pandas as pd
conn=MySQLdb.connect(host="localhost",user='root',passwd="matt123",db="ada")
df=pd.DataFrame(['A','B'],columns=['new_tablecol'])
df.to_sql(name='new_table',con=conn,if_exists='append')

输入此代码后,它会说

pandas.io.sql.DatabaseError: Execution failed on sql 'SELECT name FROM sqlite_master WHERE type='table' AND name=?;': not all arguments converted during string formatting

我对此感到困惑。我可以查询和创建表。但我无法保存此数据框。

【问题讨论】:

【参考方案1】:

不再支持您的方式。

con : SQLAlchemy 引擎或 DBAPI2 连接(传统模式)

使用 SQLAlchemy 可以使用它支持的任何数据库 图书馆。如果是 DBAPI2 对象,则仅支持 sqlite3。

风格:'sqlite',默认无

自 0.19.0 版起已弃用:“sqlite”是唯一受支持的选项 如果不使用 SQLAlchemy。

pandas.DataFrame.to_sql

试试这个?

from sqlalchemy import create_engine
import pandas as pd


engine = create_engine("mysql://root:matt123@localhost/ada")
con = engine.connect()
df = pd.DataFrame(['A','B'],columns=['new_tablecol'])
df.to_sql(name='new_table',con=con,if_exists='append')
con.close()

语法是:

engine = create_engine("mysql://USER:PASSWORD@HOST/DATABASE")

更多关于sqlalchemy的信息可以找到here

【讨论】:

以上是关于写入 MySQL 时查询 sqlite_master 表时出现 to_sql() 错误的主要内容,如果未能解决你的问题,请参考以下文章

sqlite_master 中的 name 和 tbl_name 有啥区别?

将熊猫数据框上传到红移 - 关系“sqlite_master”不存在

Sqlite联合注入辅助脚本

php中写入mysql的数据精确到秒,写查询语句的时候只要按天查,怎么写?

技术分享Sqlite联合注入辅助脚本

SQLite 模式信息元数据