pandas之to_sql

今天写一个mysql的自动化脚本,遇见了一些问题,最终折腾了很久终于搞定了。

python3.6,在使用pandas处理dataframe,写入数据库用了to_sql,数据库的连接不能使用pymysql的connect。于是选择了sqlalchemy得create_engine。

在data.to_sql("mytable",conn,index=False)的时候提示没有mysqldb,查了下python3不支持mysqldb。最终解决办法是在写create_engine的时候加了一句pymysql.代码格式如下:

engine = create_engine("mysql+pymysql://user:passwd@host:port/db?charset=utf8")

这样sqlalchemy调用python3的包得时候就会选择pymysql,而不会再去找mysqldb了。问题解决。

顺便说下to_sql的时候,dtype设置的是数据库表的类型。但是不能直接写数据库数据类型,而应该是使用的sqlalchemy的数据类型。可以通过from sqlalchemy.types import Integer,String,Numeric等等。具体类型看需要。

你可能感兴趣的:(python,数据库)