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