使用Python的Pandas pd.to_sql()方法和pysql库将数据写入MySQL数据时报错及解决方法

  • Post author:
  • Post category:mysql


在使用Python的Pandas pd.to_sql()方法和pysql库将数据写入MySQL数据时,遇到了一个莫名其妙的问题,前几天还正常工作,今天想把程序整理长函数,重新上传数据到数据库,结果程序老是报错,错误信息如下:

写入数据库错误,错误信息: 
Execution failed on sql 'SELECT name FROM sqlite_master WHERE type='table' AND name=?;': not all arguments converted during string formatting

方法检查了还是找不到错误,百思不得其解,后来在百度里输入这个错误信息,查到有人也遇到过这个错误,原因是在使用Pandas写入SQL数据库时,不能使用pymysql.connections库,这个库只能用于查询数据,下面这样写就会报错:

conn = pymysql.connect(
        host='127.0.0.1',
        user='dbmanager',
        passwd='abc123456',
        db='test',
        port=3306,
        charset='utf8'
    )

如果是写入数据需要用到这样建立数据库连接:

conn='mysql+pymysql://dbmanager:abc123456@127.0.0.1:3306/test?charset=utf8'

然后再用这个conn作为pd.to_sql()的con参数,如下:

df.to_sql(name='table1', con=conn, if_exists='append',index=False)

再次执行,数据库就可以正常写入了。



版权声明:本文为weixin_55674264原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。