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

本文介绍了一个在使用Python Pandas将数据写入MySQL数据库时遇到的奇怪问题及解决方案。问题表现为使用pymysql库时出现字符串格式化错误,解决方法是更改数据库连接方式。

在使用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)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

跨境IT全栈工程师

觉得有帮助,赏点鼓励下呀

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值