Python 无法使用ExecuteMy一次插入多个列

Python 无法使用ExecuteMy一次插入多个列,python,mysql,sql,Python,Mysql,Sql,我有两个变量要插入到我的表中 用户标识-int 标记-浮动 我有多个用户的数据,如下所示: user_ids = (-,-,-,-,-,-,-) **TUPLE** marks = (-,-,-,-,-,-,-,-) **TUPLE** 我想使用ExecuteMy将此数据插入到我的表中,并在我的flask代码段中执行此查询: con = pymysql.connect( host=host, user=user, password=password,

我有两个变量要插入到我的表中

  • 用户标识-int
  • 标记-浮动
我有多个用户的数据,如下所示:

user_ids = (-,-,-,-,-,-,-)  **TUPLE**
marks = (-,-,-,-,-,-,-,-)    **TUPLE**
我想使用ExecuteMy将此数据插入到我的表中,并在我的flask代码段中执行此查询:

con = pymysql.connect(
    host=host,
    user=user,
    password=password,
    db=db,
    charset=charset,
    cursorclass=pymysql.cursors.DictCursor,
    port=port,
)
cur = con.cursor()
percs = calcattnonull()

# percs contains list of dictionaries.
# {[<'user_id'>: <'marks'>], [<'user_id'>: <'marks'>]........}
id_ = []
perc_ = []
final = []
for perc in tqdm(percs):
    id_.append(perc["user_id"])
    perc_.append(perc["att_perc"])

id_ = tuple(id_)
perc_ = tuple(perc_)
final.append(id_)
final.append(perc_)
cur.executemany(
    "UPDATE dream_offline_calculate SET (user_id,att_percentage) VALUES (?,?)",
    final,
)
con.commit()
con=pymysql.connect(
主机=主机,
用户=用户,
密码=密码,
db=db,
字符集=字符集,
cursorclass=pymysql.cursors.DictCursor,
端口=端口,
)
cur=con.cursor()
percs=Calcattnoull()
#percs包含字典列表。
# {[: ], [: ]........}
id_U8;=[]
perc_uuz=[]
最终=[]
对于TQM中的perc(perc):
id_u.append(perc[“用户id”])
perc_.append(perc[“att_perc”])
id=元组(id)
perc=元组(perc)
final.append(id\ux)
final.append(perc_)
执行官(
“更新dream_offline_计算集(用户id,附件百分比)值(?,)”,
最终的
)
con.commit()
我一次又一次地遇到这个错误: TypeError:在字符串格式化过程中并非所有参数都已转换


提前感谢您的帮助。

executemany
使用与多次调用
execute
时相同的占位符

那么如果您的原始查询是

cur.execute(
  "UPDATE dream_offline_calculate SET (user_id,att_percentage) VALUES (?,?)",
  (user_id, att_perc),
)
等效的
executemany

cur.executemany(
  "UPDATE dream_offline_calculate SET (user_id,att_percentage) VALUES (?,?)",
  [(user_id, att_perc)],
)
也就是说,很简单

cur.executemany(
    "UPDATE dream_offline_calculate SET (user_id,att_percentage) VALUES (?,?)",
    [(perc["user_id"], perc["att_perc"]) for perc in percs],
)

应该可以做到这一点。

仍然得到TypeError:在字符串格式错误期间,并非所有参数都被转换