解决python mysql插入数据时报错:TypeError: %d format: a number is required, not str
Posted wang-jx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决python mysql插入数据时报错:TypeError: %d format: a number is required, not str相关的知识,希望对你有一定的参考价值。
今天在使用python爬取数据并将其写入mysql数据库时,使用该如下语句:
cursor.execute( "insert into comments_p_spider(owner_id,from_name,content,create_time,score,comment_level) values(%d,%s,%s,%s,%f,%s)", (p_id,str(username), str(contentStr), str(create_time),float(score), str(comment_level))) conn.commit()
报错如下:
TypeError: %d format: a number is required, not str
解决方案:The format string is not really a normal Python format string. Youmust always use %s for all fields.
也就是MySQLdb的字符串格式化不是标准的python的字符串格式化,应当一直使用%s用于字符串格式化。
所以将代码的sql语句的value格式均改为%s(无论要插入的数据是什么类型),即可正常运行。
cursor.execute( "insert into comments_p_spider(owner_id,from_name,content,create_time,score,comment_level) values(%s,%s,%s,%s,%s,%s)", (p_id,str(username), str(contentStr), str(create_time),float(score), str(comment_level))) conn.commit()
以上是关于解决python mysql插入数据时报错:TypeError: %d format: a number is required, not str的主要内容,如果未能解决你的问题,请参考以下文章
MySQL插入单行数据较大时报Row size too large错误 解决方案
MySQL插入单行数据较大时报Row size too large错误 解决方案
Mysql 插入时间时报错Incorrect datetime value: '' for column 'createtime'