Python2.7连接MySQL5.5执行插入操作报TypeError错误如何解决
Python2.7连接MySQL5.5插入报错修复方案
错误原因排查
你遇到的TypeError: not all arguments converted during string formatting报错由两个语法错误导致:
- SQL语句中第三个占位符符号错误,你误写为
$s,MySQLdb的参数占位符统一使用%s - 报错堆栈显示你实际运行的代码中,execute第二个参数写的是
( article ):仅用括号包裹变量不会被Python识别为元组,会直接把article作为单个变量传入,无法匹配3个占位符,单元素元组需要加后缀逗号写成(article,),你拆分三个字段的写法也要确保article确实包含3个对应元素。
修正后代码
import MySQLdb def connect(channeldict): return MySQLdb.connect('localhost','XXXXXX', 'XXXXXXXXXX','test') def outcommunicate(channeldict,dbconnection,db_object): cur = dbconnection.cursor() for article in db_object: # 修正占位符符号:把$s改成%s cur.execute("""INSERT INTO ccode (ccodeid,leftcode,rightcode) VALUES (%s, %s, %s)""", ( article[0] , article[1] , article[2] ) ) print 'in channel:', article # 提交事务 dbconnection.commit() cur.close() def disconnect(channeldict,dbconnection): dbconnection.close()
额外验证项
如果修改后仍报错,可以做如下检查:
- 打印
len(article)确认每一条article都有3个元素,不会出现索引越界 - 确认运行的是修改后的代码,不是Python缓存的旧版本代码
内容的提问来源于stack exchange,提问作者hireindian privateLtd
相关产品推荐
相关产品推荐

