18

我有一个关于如何将数据框保存到本地 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

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

4

1 回答 1

27

不再支持您的方式。

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

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

风味: 'sqlite',默认无

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

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可以在这里找到

于 2017-04-16T13:19:16.123 回答