同时用用executemany 和execute 向数据库中插入一条包含中文的数据,用executemany 可以正常插入中文,execute就会报错。
报错内容为:
pymysql.err.InternalError: (1054, "Unknown column '白胡子' in 'field list'") ?
用executemany写的代码:
add_sql = 'INSERT INTO account (id,Student_Name,grade,sex,achievement)VALUES(%s,%s,%s,%s,%s)'
args = [(11,'白胡子',1,0,60)]
add = cur.executemany(add_sql,args)
可以正常运行,并且在数据库中可以添加一条数据。
然后是execute写的代码:
add_sql = 'INSERT INTO account (id,Student_Name,grade,sex,achievement)VALUES(%s,%s,%s,%s,%s)'%(12,'白胡子',1,0,59);
add = cur.execute(add_sql)
conn.commit()
就报错了 pymysql.err.InternalError: (1054, "Unknown column '白胡子' in 'field list'")
没搞懂,哪位大佬有空告诉我哪里错误了? 网上查说是编码问题,我已经确认过 库、表是UTF-8,程序是 charset=utf8 ,没有问题的! 都是这样连接 ,用executemany就正常,execute 就报错,太奇怪了!!
executemany传入的对象是一个列表,列表内容为一个个元组,也就是 [(11,'白胡子',1,0,60),(12,'白胡子2',1,0,60),]
,而execute传入对象为 一个元组(11,'白胡子',1,0,60)
value = (12,'白胡子',1,0,59)
add_sql = 'INSERT INTO account (id,Student_Name,grade,sex,achievement)VALUES(%s,%s,%s,%s,%s)';
add = cur.execute(add_sql,value)
conn.commit()