使用pandas将上传的excel文件保存到数据库

pandas确实是一个神器。

基于django的上传

1 file = request.FILES.get(k)
2 # 建立连接,username替换为用户名,passwd替换为密码,test替换为数据库名
3 conn = create_engine('mysql+mysqldb://username:password@localhost:3306/test?charset=utf8', encoding='utf-8')
4 df = pd.read_excel(file)
5 df.to_sql(table_name, con=conn, if_exists='append')

在开始的时候出现一个问题,在保存到数据库时报错:

UnicodeEncodeError: 'charmap' codec can't encode character '\u7ad9' in position 1: character maps to <undefined>

最后发现问题出在 使用sqlalchemy创建连接时没有指定charset,就在 

'mysql+mysqldb://username:password@localhost:3306/test?charset=utf8'

而在sqlalchemy的示例中也没有说明:

engine = create_engine("mysql://scott:tiger@hostname/dbname", encoding='latin1', echo=True)
posted @ 2020-02-25 18:26  守望人间  阅读(1234)  评论(0)    收藏  举报