gpt4 book ai didi

python - 无法使用executemany一次插入多列

转载 作者:行者123 更新时间:2023-11-29 17:14:33 24 4
gpt4 key购买 nike

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

  • user_id - 整数
  • 标记 - float

我有多个用户的数据,如下所示:

user_ids = (-,-,-,-,-,-,-)  **TUPLE**
marks = (-,-,-,-,-,-,-,-) **TUPLE**

我想使用executemany将此数据插入到我的表中,并且我正在我的 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()

我一次又一次地收到此错误:类型错误:在字符串格式化期间并非所有参数都被转换

预先感谢您对我的帮助。

最佳答案

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],
)

应该可以解决问题。

关于python - 无法使用executemany一次插入多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51702199/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com