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:在字符串格式错误期间,并非所有参数都被转换