用executemany 可以正常插入中文,execute就会报错?

同时用用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()