今天写一个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和pandas库将DataFrame写入MySQL数据库的方法。通过使用sqlalchemy的create_engine并指定pymysql作为驱动程序,可以避免Python3中mysqldb不兼容的问题。此外还介绍了to_sql函数中dtype参数的正确用法。
16万+

被折叠的 条评论
为什么被折叠?



