关于pandas.to_sql的问题

时间:2017-03-31 08:34:13

标签: pandas mysql-python

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

答案 0 :(得分:13)

不再支持你的方式了。

  

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